public class User{
public String username; pubilc User(String username){
this.username = username;
}
public void setUsername(String name){
username = name;
}
}
用反射机制得到User对象,并执行setUsername(“hello”)方法。
public String username; pubilc User(String username){
this.username = username;
}
public void setUsername(String name){
username = name;
}
}
用反射机制得到User对象,并执行setUsername(“hello”)方法。
public class User {
public static String username; public User() {
super();
// TODO Auto-generated constructor stub
} public User(String username) {
this.username = username;
} public void setUsername(String name) {
username = name;
} public static void main(String [] args) throws InstantiationException,
IllegalAccessException, ClassNotFoundException {
((User) Class.forName("User").newInstance()).setUsername("Hello");
System.out.println(User.username);
}
}我可以写,但是针对于本题,我也收藏了,等待更好的答案
Class c = Class.forName("User");
Method m= c.getMethod("setUsername",null);
m.invoke( "Hello",null);
Object user = userClass.getConstructor(new Class[]{String.class}).newInstance(new Object[]{null});
Method setUsernameMethod = userClass.getMethod("setUsername",new Class[]{String.class});
setUsernameMethod.invoke(user,new Class[]{"Hello"});
import java.lang.reflect.*;
public class ReflectTest {
public static void main(String args[])throws Exception{
Class clazz=User.class;
Constructor cs=clazz.getConstructor(new Class[]{});
Method method=clazz.getMethod("setUsername", new Class[]{});
PrivateTest pt=(PrivateTest)cs.newInstance(new Object[]{});
Field fe=clazz.getDeclaredField("name");
fe.setAccessible(true);
fe.set(pt,"hello");
method.invoke(pt);
}
}
Class c = Class.forName("User");//得到类型
Object obj = c.newInstance();//新建对像
Class types[] = new Class[]{String.class};//参数类型
Object args[] = {"Hello"};//传入的参数
Method method = obj.getClass().getMethod("setUsername", types);//得到方法
method.invoke(obj, args);//非静态方法,通过实例调用
.......
Class <?> userClass = Class.forName("User"); //得到User类类型
Constructor userConstructor = userClass.getConstructor(new Class[]{String.class});//得到构造函数
Object user = userConstructor.newInstance(new Object[]{null}); //初始化User类的对象
Method setUsernameMethod = userClass.getMethod("setUsername",new Class[]{String.class}); //得到setUsername方法
Object invoke = setUsernameMethod.invoke(user,new Object[]{"Hello"});//运行方法
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
User user = null;
Class c=Class.forName(User.class.getName());
//获取User类构造函数
Constructor ctor=c.getConstructor(new Class[]{String.class});
user=(User)(ctor.newInstance("hihi"));//利用构造函数创建User实例user
user.setUsername("hello");
System.out.println(user.username);
}catch(Exception e){
e.printStackTrace();
}
}}