Сначала создайте следующее в отдельном файле:
public Do_Not_Instantiate_This_Class extends Exception {
/*
*Please Do Not Instantiate This Class
*/
private static final long serialVersionUID = 1L;
}
Затем создайте в своем внутреннем классе конструктор, который будет
private final innerClass() throws Do_Not_Instantiate_This_Class {
throw(new Do_Not_Instantiate_This_Class());
}
Таким образом, никакие классы, кроме внешнего, не могут «видеть» конструктор, и внешний класс не может использовать конструктор без объявления try / catch или throws для Do_Not_Instantiate_This_Class, чтобы даже компилировать, и он всегда будет ловить или бросить его во время выполнения. Не совсем оптимально, но я думаю, что это сделано так, как вы хотите.