Klasy przydatne - rlip/java GitHub Wiki
- .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
- .equals(o1, o2); // lepsze porównanie, bo z nullem
- .toString(o) // lepsze bo zwróci stringa null, a nie wyrzuci NullPointerException
- .deepEquals
- .compare
- .hashCode
- .createFile
- .createDirectory
- .copy
- .move
- .readAllLines
- .getFileAttributeView(Paths.get("C:/start/plik.txt"), BasicFileAttributeView.class);
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
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()));
}
}
}
}