java - 在对象上使用自定义方法

标签 java interface observers

我创建了一个名为“Writeable”的接口(interface),每个实现它的类都应该重写 returnFilePath 方法 - 它返回一个字符串 - 与该类相关的正确文件路径的路径。 例如:

public class PatientRepository extends Observable implements Writeable,Readable{
    private static final String filepath="src/files/patients.det";
    ...
    @Override
    public String returnFilePath() {
       return filepath;
    }

正如你所看到的,这个类也扩展了Observable。该类由 FileManager 类观察:

public class FileManager implements Observer {

@Override
public void update(Observable o, Object arg) {
    try (OutputStream fileOutputStream = new FileOutputStream(????);
         ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream)){
        objectOutputStream.writeObject(arg);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

我想要做的是,在 FileOutputStream 构造函数中,我将根据我当前正在处理的对象传递正确的文件路径,但我无法访问我编写的 returnFilePath() 方法。

我应该怎么做才能解决这个问题?

最佳答案

我所要做的就是选角:

public class FileManager implements Observer {

@Override
public void update(Observable o, Object arg) {

    try (OutputStream fileOutputStream = new FileOutputStream( ((Writeable)o).returnFilePath());
         ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream)){
        objectOutputStream.writeObject(arg);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

关于java - 在对象上使用自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61932045/

相关文章:

java - 在 Java 中向 MatOfPoint 变量添加值

java - Tomcat 为每个请求重置 session

java - 如何从 Thread 对象重新绘制 jTree?

java - java抽象类和接口(interface)最佳实践

c# - 覆盖显式接口(interface)实现?

javascript - polymer ,观察全局变量

java - 为 log4j 添加微秒级

java - 随着时间的推移,计划具有新功能的 Java API 的适当方法是什么?

laravel - 使用观察者广播 Eloquent 事件

magento - 结帐开始观察员