Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public final class Test {
public static void main(String[] args) {
try {
final Constructor<?> qwertyConstructor = Qwerty.class.getDeclaredConstructors()[0];
qwertyConstructor.setAccessible(true);
System.out.println("I've got " + qwertyConstructor.newInstance());
final Constructor<?> timeUnitConstructor = java.util.concurrent.TimeUnit.class.getDeclaredConstructors()[0];
timeUnitConstructor.setAccessible(true);
timeUnitConstructor.newInstance();
System.out.println("You'll never see me.");
} catch (IllegalAccessException | InvocationTargetException | IllegalArgumentException | InstantiationException x) {
x.printStackTrace();
}
}
}
class Qwerty {
private Qwerty() {
}
}I've got ololo.Qwerty@45ee12a7
java.lang.IllegalArgumentException: Cannot reflectively create enum objects
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at ololo.Test.main(Test.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
И судя по ссылке оттуда выходит, что не нужно бросать исключения в конструкторе энума. Это лишний код.
SHAPITO_CIRCUS;
public enum LanguageUtils {
SYNCH_OBJECT;
/** java-doc */
public static void doWork1() {
// много код здесь, а потом
synchronized (SYNCH_OBJECT) {
// doSomeReadWriteOperation1 - внутри изменение/чтение общего объект N1
}
}
/** java-doc */
public static String doWork2(String name) {
// много код здесь, а потом
synchronized (SYNCH_OBJECT) {
// doSomeReadWriteOperation2 - внутри изменение/чтение общего объект N1
}
return "";
}
}
Enum-Всемогущий