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