Klasy przydatne - rlip/java GitHub Wiki

Arrays

  • .asList
  • .binarySearch - wyszukuje parametr param w podanej tablicy array[]
  • .equals - porównuje dwie tablice dowolnych typów
  • .fill - wypełnia tablicę wartością w pętli

Objects

  • .equals(o1, o2); // lepsze porównanie, bo z nullem
  • .toString(o) // lepsze bo zwróci stringa null, a nie wyrzuci NullPointerException
  • .deepEquals
  • .compare
  • .hashCode

Files

  • .createFile
  • .createDirectory
  • .copy
  • .move
  • .readAllLines
  • .getFileAttributeView(Paths.get("C:/start/plik.txt"), BasicFileAttributeView.class);

Random, Math, Robot

StringJoiner

Lepszy od StringBuilder i StringBuffer bo można tak:

public class StringConcat {
    public static void main(String[] args) {
        StringJoiner joiner = new StringJoiner(",", "{", "}");
        String result = joiner.add("Ania").add("ma").add("kota").toString();
        System.out.println(result);
    }
}
public class StringConcat2 {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Ania", "Karol", "Bartek", "Jerzy");
        String allNames = "";
        allNames = allNames.join(", ", names);
        System.out.println(allNames);
    }
}
public class StringConcat3 {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Ania", "Karol", "Bartek", "Jerzy");
        String allNames = names.stream().collect(Collectors.joining(", ", "{", "}"));
        System.out.println(allNames);
    }
}

String.join(CharSequence delimiter, Iterable<? extends CharSequence> elements) - przyjmuje separator, a drugim argumentem jest obiekt implementujący interfejs Iterable, czyli np. dowolna kolekcja lub tablica Stringów

Proxy

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class DynamicProxyApp {
    public static void main(String[] args) {
        System.out.println("Without proxy:");
        System.out.println("---------------------");
        Car car = new CarImpl();
        car.runEngine("Driver");
        System.out.println("---------------------");
        System.out.println("\nWith proxy:");
        System.out.println("---------------------");
        Car carProxy = (Car) Proxy.newProxyInstance(Car.class.getClassLoader(),
                new Class[]{Car.class},
                new CarInvocationHandler(new CarImpl()));
        carProxy.runEngine("Driver");
        System.out.println("---------------------");
    }
    interface Car {
        void runEngine(String message);
    }
    static class CarImpl implements Car {
        @Override
        public void runEngine(String who) {
            System.out.println(String.format("Engine is running. [%s] run it.", who));
        }
    }
    static class CarInvocationHandler implements InvocationHandler {
        private final Object original;
        CarInvocationHandler(Object original) {
            this.original = original;
        }
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            try {
                System.out.println(String.format(">> before method: [%s]", method.getName()));
                return method.invoke(original, args);
            } finally {
                System.out.println(String.format("<< after method: [%s]", method.getName()));
            }
        }
    }
}
⚠️ **GitHub.com Fallback** ⚠️