如果我有一些类,其中某些接口(interface)受到保护,但我想在包外部和层次结构之外使用它,可以使用哪种模式,或者有什么方法?
我不想更改那些旧(遗留)类的访问修饰符。
最佳答案
以下代码显示了如何访问此类字段:
Field privateStringField = PrivateObject.class.
getDeclaredField("privateString");
privateStringField.setAccessible(true);
String fieldValue = (String) privateStringField.get(privateObject);
同样的事情也可以在方法中完成。但作为一种模式,您最好将其打包在静态实用程序方法中,例如 ReflectionAccessor.accessField(Class class, Object object, String fieldName)
。
关于java - 通过模式访问非公开方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8487992/