为超长标题道歉。我很难找到明确的解决方案。我是Java的新手,我的问题是关于Java的Observer update()方法。
[编辑]:我正在使用Java 8.使用Observable和Observer是我的任务要求。
我将这些类放在一个文件中,比如FileA.java:
public abstract class Filter implements Observer
{
@Override
public abstract void update(Observable o, Object arg);
}
public abstract class Tester extends Filter
{
@Override
public void update(Observable o, Object arg)
{
// Some code here. This is activated when another
// class in FileA.java calls a write() method.
// The write() method is also located FileA.java.
Boolean passed = test(message);
}
public Boolean test(Message message)
{
// Some code here.
}
}
在另一个文件中,假设FileB.java,我有:
public abstract class SubTester extends Tester
{
// No update function. Was hoping that the update()
// method in Tester would call SubTester's test()
// method.
public Boolean test(Message message)
{
// Some slightly different code here.
}
}
我没有包含所有代码,因为它与我的问题无关,因为我知道FileA.java中的代码工作正常。我的问题是关于FileB.java。
在FileA.java中,这是正确的(正确):
在FileB.java中,会发生这种情况:
当我运行FileB.java时,我希望Tester的update()方法调用SubTester的test()方法而不是调用Tester的test()方法。
我知道修复此问题的方法是将另一个update()方法实现添加到SubTester。但是,我希望由于SubTester的test()方法,返回函数和参数与其父类相同,因此可能有一种方法可以防止这种情况,因为update()方法将完全相同。因此,这样做会复制父类的代码。
有没有办法在不重复代码的情况下获得此结果,而在SubTester中使用相同的Tester update()实现?提前谢谢!