Java反射的两种使用方法(推荐)

时间:2022-09-20 19:33:06

1.创建user.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.tao.test;
public class user {
  private string name;
  private int id;
  public user() {
  }
  public string getname() {
    return name;
  }
  public void setname(string name) {
    this.name = name;
  }
  public int getid() {
    return id;
  }
  public void setid(int id) {
    this.id = id;
  }
}

2.main方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.tao.test;
import java.lang.reflect.constructor;
import java.lang.reflect.field;
public class test {
  public static void main(string[] args) throws exception, securityexception {
    //第一种 constructor<?>方法
    constructor<?> a = user.class.getdeclaredconstructor();
    a.setaccessible(true);
    user b = (user)a.newinstance();
    b.setid(1);//id字段
    b.setname("test");//name字段
    system.out.println(b.getid()+" "+b.getname());
    //第二种 class<?>方法
    class<?> c = class.forname("com.tao.test.user");
    field idf = c.getdeclaredfield("id");//id字段
    idf.setaccessible(true);
    object o = c.newinstance();
    idf.set(o, 2);
    field namef = c.getdeclaredfield("name");//name字段
    namef.setaccessible(true);
    object name = c.newinstance();
    namef.set(name, "jack");
    system.out.println(idf.get(o)+" "+namef.get(name));
    //普通new
    user user = new user();
    user.setid(3);
    user.setname("tery");
    system.out.println(user.getid()+" "+user.getname()+" "+user.getclass());
  }
}

3.控制台输出:

 test
 jack
tery class com.tao.test.user

总结

以上所述是小编给大家介绍的java反射的两种使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:https://www.cnblogs.com/i-tao/archive/2018/05/29/9103589.html