Discuss / Java / 第一遍的时候删光了代入的值,也没用set

第一遍的时候删光了代入的值,也没用set

Topic source

package com.itranswarp.learnjava;

import java.lang.reflect.Field;

/**

 * Learn Java from https://www.liaoxuefeng.com/

 * 

 * @author liaoxuefeng

 */

public class Main {

public static void main(String[] args) throws NoSuchFieldException, SecurityException {

// TODO: 利用反射给name和age字段赋值:

Person p1 = new Person("Xiao Ming");

        Class c1 = p1.getClass();

        Field f1 = c1.getDeclaredField("name");

        f1.setAccessible(true);

        Person p2 = new Person(20);

        Class c2 = p2.getClass();

        Field f2 = c2.getDeclaredField("age");

        f2.setAccessible(true);

System.out.println(p1.getName()); // "Xiao Ming"

System.out.println(p2.getAge()); // 20

}

}

用了set之后也必须输入类型

package com.itranswarp.learnjava;

import java.lang.reflect.Field;

public class Main {

public static void main(String[] args) throws Exception {

String name = "Xiao Ming";

int age = 20;

Person p = new Person(age);

// TODO: 利用反射给name和age字段赋值:

Class c = p.getClass();

Field f = c.getDeclaredField("name");

f.setAccessible(true);

f.set(p, name);

f = c.getDeclaredField("age");

f.setAccessible(true);

f.set(p, age);

System.out.println(p.getName()); // "Xiao Ming"

System.out.println(p.getAge()); // 20

}

}


  • 1

Reply