繁体   English   中英

force base class使用自己的方法而不是覆盖方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM