在Java中是否可以通过反射访问私有字段str?例如,获取此字段的值.
class Test
{
private String str;
public void setStr(String value)
{
str = value;
}
}
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法让文字能够有黑色轮廓?我的文字视图会有不同的颜色,但是有些颜色不能很好地显示在我的背景上,所以我想知道是否有一种简单的方法来获得黑色轮廓或其他可以完成工作的东西?我宁愿不必创建自定义视图并制作画布等.
我正在尝试编写一个方法,使用反射在类中获取私有字段.
这是我的课程(本例简化):
public class SomeClass {
private int myField;
public SomeClass() {
myField = 42;
}
public static Object getInstanceField(Object instance, String fieldName) throws Throwable {
Field field = instance.getClass().getDeclaredField(fieldName);
return field.get(instance);
}
}
Run Code Online (Sandbox Code Playgroud)
所以说我这样做:
SomeClass c = new SomeClass();
Object val = SomeClass.getInstanceField(c, "myField");
Run Code Online (Sandbox Code Playgroud)
我得到的是IllegalAccessException因为myField是私人的.有没有办法使用反射获取/设置私有变量?(我在C#中完成了,但这是我第一次在Java中尝试过它).如果你想知道为什么需要做这样的疯狂:),这是因为有时在单元测试期间将私有变量设置为失败测试的伪值等是很方便的.
反思是否打破了私人方法的想法?因为可以从类外部访问私有方法吗?(也许我不理解反思的意思或错过别的东西,请告诉我) http://en.wikipedia.org/wiki/Reflection_%28computer_science%29
编辑: 如果relection打破了私有方法的想法 - 我们是否只将私有方法用于程序逻辑而不用于程序安全?
谢谢