作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想重用用另一个类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/
我是一名优秀的程序员,十分优秀!