java使用反射機制設定私有成員變數的值
阿新 • • 發佈:2019-01-30
package com.demo.test; import java.lang.reflect.Field; public class Demo { private static Field declaredField; public static void main(String[] args) throws Exception{ Class clazz = Student.class; Student student = (Student) clazz.newInstance(); declaredField = clazz.getDeclaredField("name"); declaredField.setAccessible(true); declaredField.set(student, "tom"); // Method declaredMethod = clazz.getDeclaredMethod("syso"); // declaredMethod.invoke(declaredMethod); student.syso(); } } class Student{ private String name; public void syso() { System.out.println(name); } }
1.使用反射機制,給類的私有成員變數賦值
2.有的人問,直接提供public的set和get方法不就行了嗎?
回答:可以。但是這是java的面試題,student類不能有任何改動,要求輸出name的值為tom.所以可以使用jvm的反射機制實現。
3.執行效果圖: