我想从一个示例类中调整一个方法的返回值,我不太确定是否有反射。我想不通,所以我想在这里问一下。例如,假设我有以下类foo:
public final class Foo {
public final String getName() {
return "Foo";
}
}
一些背景:
foo类来自外部库
foo类不可调整
foo类不可扩展
因此,在这个基本示例中,我希望从getname()方法而不是foo获得返回的bar。非常明确地说:
Foo foo = new Foo();
String name = foo.getName();
System.out.println(name) //prints "Bar"
为什么我需要这个?
我需要把foo的这个示例传递给另一个只接受foo类型的对象的方法。此方法将调用方法getname(),并执行一些额外的计算。
实际用例:
我会尽量给出更多的背景,希望能更清楚一点。生成器类中有一个方法正在接受的示例 KeyManagerFactory
一个名为 setKeyManagerFactory(KeyManagerFactory keyManagerFactory)
. 此生成器类将在内部调用 getKeyManagers
在keymanagerfactory上,它将返回 KeyManagers[]
keymanagerfactory是最后一个类,它根本没有公共构造函数。getkeymanager方法也是最终的。我已经有一个 KeyManager[]
所以我想破解这个keymanagerfactory,返回我自己的数组,而不是我自己的keymanagers,并将其提供给构建器。
1条答案
按热度按时间yfjy0ee71#
既然您说过初始类是最终类,不能示例化,那么您就无能为力了。
根据我对这个问题的理解,创建一个包含
Foo
对象及其所有方法。然后当您从新创建的Bar
类,则可以对父级调用相同的函数。当然,除了你的getName
功能。注意这里
getBiz
系统的功能bar
对象只调用getBiz
系统的功能Foo
对象,而不更改其返回值。