在一行中反序列化接口属性的对象



我想知道是否有某种方法可以反序列化对象并将其分配给接口中的属性?

我已经尝试了下面的代码,但我不知道如何使用它检查"FileNotFound"异常,当然我不能只键入throws FileNotFoundException.

public interface Race_Attributes {
    String[] FirstNames = (String[]) new ObjectInputStream(new FileInputStream("./res/binary_files/Human_FirstNameString[].ser")).readObject();
}

通过在帮助程序方法中包装初始化代码来处理初始化隐式静态接口属性时检查异常的问题。

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,这将对接口的信息隐藏质量产生负面影响,因此在示例中,我将其放在单独的实用程序类中。

最新更新