java - 如何重写库类的方法或分配参数值?

标签 java jar overriding shared-libraries

我正在使用某个库(包含使用jar文件)开发一个java应用程序,我想重写该库中包含的类(抽象类)上存在的方法,甚至更改其中的某个参数值。 有办法做到这一点吗?

最佳答案

扩展您想要重写方法的类。

public class ClassFromExtLib {
    public void foo(Object param) {
    }
}

public class MyClass extends ClassFromExtLib {
    @Override
    public void foo(Object param) {
         super.foo(param);
         //adding my own implementation...
    }
}

如果您无法扩展该类,请使用可以执行该方法的包装类,然后向其中添加您自己的逻辑。

public final class ClassFromExtLib {
    public void foo(Object param) {
    }
}

public class MyClass {
    //code to initialize the instance of the class ommited
    private ClassFromExtLib bar;

    public void foo(Object param) {
         bar.foo(param);
         //adding my own implementation...
    }

    public void foo(Object param, Object param2) {
         bar.foo(param);
         //adding my own implementation using param and param2...
    }
}

如果你想从方法中添加/删除参数,那么你不能通过重写来做到这一点,这就是重载。第二种方法最适合您。

关于java - 如何重写库类的方法或分配参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17252036/

相关文章:

java - 在 netbeans 中构建后,Jar 文件无法正常运行

java - 在创建可执行 jar 时指定 JVM 参数(而不是在执行 jar 时)

java - 不要使用类型测试,声明 doTheTask?

java - JCEF 的 UnsatisfiedLinkError

java - 为什么枚举单例是序列化安全的?

java - 不稳定的 javax.jms.JMSException : Peer disposed

java - 用子类型覆盖方法

java - 在 Java 中使用内核绕过网络

java - 在本地服务器上部署可运行的jar

Symfony 2 无法覆盖模板 FOSUserBundle