package com.hongx.proxy;
public class Singleton {
public String name;
public Singleton() {
name = "FuHongXue";
}
public void setName(String name) {
this.name = name;
}
}
package com.hongx.proxy;
public class ActivityManagerNative {
public static Singleton singleton;
public ActivityManagerNative() {
singleton = new Singleton();
}
}
package com.hongx.proxy;
import java.lang.reflect.Field;
public class App {
static App app;
public static void main(String[] args) {
ActivityManagerNative activityManagerNative = new ActivityManagerNative();
app = new App();
try {
Class<?> activityManagerNativeClass = Class.forName("com.hongx.proxy.ActivityManagerNative");
Field sigletoneField = activityManagerNativeClass.getDeclaredField("singleton");
sigletoneField.setAccessible(true);
Object sigletoneObj = sigletoneField.get(null);//singleton为静态对象,直接传null获得
Singleton singleton = (Singleton) sigletoneObj;
System.out.println("-->" + singleton.name);
Singleton singleton2 = new Singleton();
singleton2.setName("YeKai");
sigletoneField.set(activityManagerNative, singleton2);
System.out.println("-->" + ActivityManagerNative.singleton.name);
} catch (Exception e) {
e.printStackTrace();
}
}
}
打印:
–>FuHongXue
–>YeKai