Вы можете решить проблему проверенных исключений при инициализации неявно статических атрибутов интерфейса, заключив код инициализации в вспомогательный метод.
public interface Race_Attributes {
String[] FirstNames = Deserializer.deserializeFirstNames();
}
final class Deserializer {
private Deserializer() {}
public static String[] deserializeFirstNames() {
try(ObjectInputStream in = new ObjectInputStream(
new FileInputStream(
"./res/binary_files/Human_FirstNameString[].ser"))) {
return (String[]) in.readObject();
}
catch( IOException | ClassNotFoundException e) {
return new String[0];
}
}
}
Поскольку Java 8 допускает статические методы в интерфейсах, вы также можете разместитьвспомогательный метод deserializeFirstNames
прямо в интерфейсе.Однако, поскольку методы в интерфейсах должны быть public
, это отрицательно скажется на качестве информации, скрывающей ваш интерфейс, поэтому в примере я поместил его в отдельный служебный класс.