[英]force base class to use its own method and not overrided method
这是我的情景:
class SomeBaseClass
{
public void foo(String str)
{
.......
}
public void foo(String strs[])
{
.......
}
}
class MyClass extends SomeBaseClass
{
public void foo(String str)
{
super.foo(str);
}
public void foo(String strs[])
{
throw new RuntimeException("only one input please!");
}
}
逻辑非常简单。 “SomeBaseClass”是我无法修改的第三方工具。 我想限制它的功能,不想允许foo(String strs [])。
问题是在SomeBaseClass里面foo(Sting str)内部调用foo(String strs [])。 因此,当我调用MyClass的foo(String str)时,我得到一个运行时异常。 如何告诉SomeBaseClassclass使用SomeBaseClass :: foo(String strs [])和所有其他类来使用MyClass :: foo(String strs [])
考虑编写一个包装器
class MyClass extends SomeBaseClass
{
private SomeBaseClass impl = new SomeBaseClass ();
public void foo(String str)
{
impl.foo(str);
}
public void foo(String strs[])
{
throw new RuntimeException("only one input please!");
}
}
也许在engg但是在MyClass.foo(String strs[])
你可以检查调用者是否是SomeBaseClass.foo(String str)
,如果是,让调用通过super.foo(String)
否则throw RuntimeException
。
要查找调用者,请检查StackTrace
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.