Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中修改封装的库?_Java - Fatal编程技术网

如何在Java中修改封装的库?

如何在Java中修改封装的库?,java,Java,我正在为我的项目使用生成器。问题是现在我需要根据我的需要修改这个库的一些方法 Generator类是final类,所以我无法创建扩展它的新类。最后一个方法也是私有的 是否有办法解决此问题,或者我需要删除此库 我的主要方法 generator.setFlowProperty(myProperty); 图书馆课程 public final class Generator{ public Builder setFlowProperty(Property property) {

我正在为我的项目使用生成器。问题是现在我需要根据我的需要修改这个库的一些方法

Generator类是final类,所以我无法创建扩展它的新类。最后一个方法也是私有的

是否有办法解决此问题,或者我需要删除此库

我的主要方法

generator.setFlowProperty(myProperty);
图书馆课程

public final class Generator{

   public Builder setFlowProperty(Property property) {

       putLast("flowProperty", property.toCustomString());

       ....
   }


   private Builder putLast(String name, String value) {
       ....
   }
}


public final class Property{

   public String toCustomString(){
       return "a" + prop;  // I want to modify this and return "b"+ instead of "a"+.
   }

}

您无法继承最后一个类。我想库作者创建生成器类不是为了重写。无论如何,您可以使用所需的逻辑创建自己的类。

如果您只想覆盖库中的少数函数,并保留大部分函数,则可以创建一个封装库类的类,只修改所需的行为。因此,该类的主要目的是在library类之前充当代理,除非您想修改某些行为。

这些
final
的目的是不允许这种做法,那么您认为您可以如何做到这一点呢?如果库是开源的,您可以提交一个补丁。@Markus是的,它是开源的。我试试看。