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.运行效果图: