package Reflection;
import java.util.Date;
public class User {
public String ID;
private String name;
private String old;
private static Date time;
public User() {
super();
}
public User(String name, String old) {
super();
this.name = name;
this.old = old;
}
public User(String Id,String name, String old,Date time) {
super();
this.ID = Id;
this.name = name;
this.old = old;
this.time = time;
}
public static Date getTime() {
return time;
}
public static void setTime(Date time) {
User.time = time;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
private User(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOld() {
return old;
}
public void setOld(String old) {
this.old = old;
}
public void F1() {
System.out.println("F1");
}
public void F2(String s) {
System.out.println(s);
}
public String F3(String s) {
return s;
}
private void F4(String s){
System.out.println("F4");
}
public static void F5(){
System.out.println("F5");
}
}
package Reflection;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Date;
public class Reflect {
public static void main(String[] args) {
try {
Class class1=Class.forName("Reflection.User");
System.out.println(class1);
User user1=new User();
Class class2=user1.getClass();
System.out.println(class2);
Class class3=User.class;
System.out.println(class3);
System.out.println("--------------------------------------------");
Constructor constructor=class1.getConstructor(null);
User user2=(User) constructor.newInstance(null);
System.out.println(constructor.newInstance(null));
System.out.println(constructor);
System.out.println(user2);
System.out.println("--------------------------------------------");
Constructor constructor2=class1.getConstructor(String.class,String.class);
User user3=(User) constructor2.newInstance("hhh","20");
System.out.println(constructor2.newInstance("hhh","20"));
System.out.println(constructor2);
System.out.println(user3);
System.out.println("--------------------------------------------");
Constructor constructor3=class1.getDeclaredConstructor(String.class);
constructor3.setAccessible(true);
User user4=(User) constructor3.newInstance("hhh");
System.out.println(constructor3.newInstance("hhh"));
System.out.println(constructor3);
System.out.println(user4);
System.out.println("--------------------------------------------");
Constructor[] constructors=class1.getDeclaredConstructors();
for(Constructor c:constructors){
System.out.println(c);
}
System.out.println("--------------------------------------------");
User user5=(User) class1.newInstance();
Method m1=class1.getMethod("F1", null);
m1.invoke(user5, null);
Method m2=class1.getMethod("F2", String.class);
m2.invoke(user5, "hhh");
Method m3=class1.getMethod("F3", String.class);
String s=(String) m3.invoke(user5, "aaaa");
System.out.println(s);
Method m4=class1.getDeclaredMethod("F4", String.class);
m4.setAccessible(true);
m4.invoke(user5, "hhh");
Method m5=class1.getMethod("F5", null);
m5.invoke(null,null);
System.out.println("--------------------------------------------");
Field f=class1.getField("ID");
String id=(String)f.get(user5);
System.out.println(id);
f.set(user5,"123");
System.out.println(user5.ID);
Field f1=class1.getDeclaredField("name");
f1.setAccessible(true);
String name=(String)f1.get(user5);
System.out.println(name);
f1.set(user5,"hhh");
name=(String)f1.get(user5);
System.out.println(name);
Field f2=class1.getDeclaredField("time");
f2.setAccessible(true);
f2.set(null,new Date());
Date date=(Date)f2.get(user5);
System.out.println(date);
} catch (Exception e) {
e.printStackTrace();
}
}
}