gpt4 book ai didi

java - 如何在 java 中引用供应商或消费者的私有(private)方法

转载 作者:行者123 更新时间:2023-11-30 05:26:49 25 4
gpt4 key购买 nike

我想重用用另一个类A的Private方法编写的一段代码。比如

class A
{
private String method(String data){
return "abcd";
}
}

List myList= getListFromSomeSource();
myList.stream()
.map(A::method)
.collect()....etc

最佳答案

如果类实现没有提供此类选项并且该实现无法修改,则访问类的私有(private)方法的唯一方法是通过反射。

假设A类的method函数有一个String返回类型,一个简单的方法是

public static String invokeMethod(A object, String data) throws Exception {
Method method = A.class.getDeclaredMethod(“method”, String.class);
method.setAccessible(true);
return (String) method.invoke(object, data);
}

由于所涉及的 Class A 方法不是静态的,因此需要使用对象引用来访问它,无论是否有反射,例如

A object = new A(); // Create object of type A
String data = “...”; // Specify data input
String result = invokeMethod(object, data); // Call method

如果无法创建 A 类型的此类对象,或者调用者不想将此类对象的引用传递给 invokeMethod,则唯一的其他选项left 实际上是在 A 类 之外重写 method 函数。

关于java - 如何在 java 中引用供应商或消费者的私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58385798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com