假设我有这两个类,其中一个继承另一个:
我想要做的是,在重写方法中,提醒用户调用超类的方法
或者,是否有一种方法可以使用反射来知道一个覆盖其超类方法的方法是否调用了原始方法,如果我将类类型传递给超类呢?
例如:
也许我可以在超级方法上添加注释,以便它显示需要被调用?
编辑 注意,不是超类需要调用foo方法,而是某人调用子类的foo方法,例如数据库close方法
如果必要,即使使该方法“不可重写”,我也会很高兴,但仍希望给出自定义消息。
编辑2 这就是我想要的方式:
但是有了上述内容仍然很好,甚至可以提供一个自定义消息来执行其他操作,例如:“无法覆盖Bar中的最终方法,请改为从您的实现方法中调用它”
public class Bar{
public void foo(){
}
}
public class FooBar extends Bar {
@Override
public void foo(){
super.foo(); //<-- Line in question
}
}
我想要做的是,在重写方法中,提醒用户调用超类的方法
foo
,这样可以吗?或者,是否有一种方法可以使用反射来知道一个覆盖其超类方法的方法是否调用了原始方法,如果我将类类型传递给超类呢?
例如:
public abstract class Bar{
public Bar(Class<? extends Bar> cls){
Object instance = getInstance();
if (!instance.getClass().equals(cls)) {
throw new EntityException("The instance given does not match the class given.");
}
//Find the method here if it has been overriden then throw an exception
//If the super method isn't being called in that method
}
public abstract Object getInstance();
public void foo(){
}
}
public class FooBar extends Bar {
public FooBar(){
super(FooBar.class);
}
@Override
public Object getInstance(){
return this;
}
@Override
public void foo(){
super.foo();
}
}
也许我可以在超级方法上添加注释,以便它显示需要被调用?
编辑 注意,不是超类需要调用foo方法,而是某人调用子类的foo方法,例如数据库close方法
如果必要,即使使该方法“不可重写”,我也会很高兴,但仍希望给出自定义消息。
编辑2 这就是我想要的方式:
但是有了上述内容仍然很好,甚至可以提供一个自定义消息来执行其他操作,例如:“无法覆盖Bar中的最终方法,请改为从您的实现方法中调用它”
final
的作用。 - JB Nizet