Java反射类private私有变量Map并赋值
import java.util.LinkedHashMap;
import java.util.Map;
public class MyObj {
private String KEY = "NAME";
//目标是通过反射在外部访问cache
private Map<String, String> cache = new LinkedHashMap<>();
public MyObj() {
cache.put(KEY, "fly");
}
public void print() {
System.out.println(cache.get(KEY));
}
}
import java.lang.reflect.Field;
import java.util.Map;
import java.util.Set;
public class Main {
public static void main(String[] args) {
MyObj obj = new MyObj();
System.out.println("反射前");
obj.print();
System.out.println("===");
try {
Field privateField = MyObj.class.getDeclaredField("cache");
privateField.setAccessible(true);
Map map = (Map) privateField.get(obj);
System.out.println("-");
Set<String> sets = map.keySet();
Object[] keys = sets.toArray();
for (Object k : keys) {
System.out.println("遍历key-旧值:" + k + "->" + map.get(k.toString()));
//对MyObj里面的cache设置新值。
map.put(k, "phil");
}
System.out.println("--");
System.out.println("反射后");
obj.print();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Java反射改变Android属性_android 反射修改变量值_zhangphil的博客-CSDN博客Java反射改变Android属性在某些情况下,Android体系里面的某些对象没有对外提供针对某个属性或者类,方法公开的get或者set方法,但是项目需要对这些需要修改和调整。就需要使用Java的反射机制修改Android的属性。举一个简单的例子,通过Java反射机制改变Android ListView分割线的高度值。Android的ListView本身有分割线,并对外提供了公开设置分割线高度的_android 反射修改变量值https://blog.csdn.net/zhangphil/article/details/80138465
Java反射类Class,反射方法Method以及反射变量Field_zhangphil的博客-CSDN博客Java反射类Class,反射方法Method以及反射变量Fieldimport com.orhanobut.logger.Logger;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;public class JavaActivity extends A...https://blog.csdn.net/zhangphil/article/details/80185335
kotlin类成员变量字段field的get/set_zhangphil的博客-CSDN博客kotlin类成员变量字段field的get/set。https://blog.csdn.net/zhangphil/article/details/129233934