Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
4,120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.76 KB | None | 0 0
  1. package helloworld;
  2.  
  3. import static helloworld.HelloWorld.Repeater.repeatIt;
  4.  
  5. public class HelloWorld {
  6.  
  7.     public HelloWorld() {
  8.         Class<?> executingClass = this.getClass();
  9.         Tuple<Integer, String> data = extractMessage(executingClass);
  10.  
  11.         class SimplePrinter implements Runnable {
  12.             private final String message;
  13.  
  14.             SimplePrinter(String message) {
  15.                 this.message = message;
  16.             }
  17.  
  18.             @Override
  19.             public void run() {
  20.                 System.out.println(message);
  21.             }
  22.         }
  23.         repeatIt(data.first, new SimplePrinter(data.second));
  24.     }
  25.  
  26.     private Tuple<Integer, String> extractMessage(Class<?> clazz) {
  27.         char[] className = clazz.getSimpleName().toCharArray();
  28.         StringBuilder messageBuilder = new StringBuilder("");
  29.         int splitIndex = 0;
  30.         for (char character : className) {
  31.             if (Character.isUpperCase(character) && className[0] != character) {
  32.                 messageBuilder.append(" ");
  33.                 splitIndex = clazz.getSimpleName().indexOf(character);
  34.             }
  35.             messageBuilder.append(character);
  36.         }
  37.         return new Tuple<>(splitIndex, messageBuilder.toString());
  38.     }
  39.  
  40.     public static void main(String[] args) {
  41.         new HelloWorld();
  42.     }
  43.  
  44.     private class Tuple<X, Y> {
  45.         public final X first;
  46.         public final Y second;
  47.  
  48.         public Tuple(X x, Y y) {
  49.             this.first = x;
  50.             this.second = y;
  51.         }
  52.     }
  53.  
  54.     public static class Repeater {
  55.  
  56.         public static void repeatIt(int times, Runnable action) {
  57.             for (int i = 0; i < times; i++) {
  58.                 action.run();
  59.             }
  60.  
  61.         }
  62.  
  63.     }
  64.  
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement