reflection代码
package reflection;
public class reflection_1 {
public static void main(String[] args) throws ClassNotFoundException {
Class c1 = Class.forName("reflection.user");
System.out.println(c1);
Class c2 = Class.forName("reflection.user");
Class c3 = Class.forName("reflection.user");
Class c4 = Class.forName("reflection.user");
System.out.println(c2.hashCode());
System.out.println(c3.hashCode());
System.out.println(c4.hashCode());
Class clazz = user.class;
Class c5 = c1.getClass();
Class c6 = Integer.TYPE;
Class c7 = c1.getSuperclass();
System.out.println(c7);
}
}
class people{
String single;
int age;
public people() {
}
public String getSingle() {
return single;
}
public void setSingle(String single) {
this.single = single;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public people(String single, int age) {
this.single = single;
this.age = age;
}
}
class user extends people{
private int id;
private String username;
private boolean vip;
public user(int id, String username, boolean vip) {
this.id = id;
this.username = username;
this.vip = vip;
}
public user() {
}
public int getId() {
return id;
}
public String getUsername() {
return username;
}
public boolean isVip() {
return vip;
}
public void setId(int id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
public void setVip(boolean vip) {
this.vip = vip;
}
@Override
public String toString() {
return "user{" +
"id=" + id +
", username='" + username + '\'' +
", vip=" + vip +
'}';
}
}
package reflection;
import java.lang.Class;
import java.lang.annotation.ElementType;
public class reflection_2 {
public static void main(String[] args) throws ClassNotFoundException {
Class c1 = Object.class;
Class c2 = Comparable.class;
Class c3 = String[].class;
Class c4 = int[][].class;
Class c5 = Override.class;
Class c6 = ElementType.class;
Class c7 = Integer.class;
Class c8 = void.class;
Class c9 = Class.class;
user u1 = new user();
user u2 = new user();
System.out.println(c1.hashCode());
System.out.println(c2.hashCode());
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
System.out.println(c6);
System.out.println(c7);
System.out.println(c8);
System.out.println(c9);
}
}
package reflection;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class reflection_3 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {
Class c1 = Class.forName("reflection.user");
System.out.println(c1.getName());
System.out.println(c1.getSimpleName());
System.out.println("************************************************");
Field[] fields = c1.getFields();
for (Field field : fields) {
System.out.println(field);
}
fields = c1.getDeclaredFields();
for (Field field : fields) {
System.out.println(field);
}
System.out.println("************************************************");
Field id = c1.getDeclaredField("id");
System.out.println(id);
System.out.println("************************************************");
Constructor[] constructors = c1.getConstructors();
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
constructors = c1.getDeclaredConstructors();
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
System.out.println("=====================");
Method[] methods = c1.getMethods();
for (Method method : methods) {
System.out.println(method);
}
System.out.println("************************************************");
methods = c1.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method);
}
System.out.println("************************************************");
Method declaredMethod = c1.getDeclaredMethod("getUsername",null);
System.out.println(declaredMethod);
Method setUsername = c1.getMethod("setUsername", String.class);
}
}
package reflection;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class reflection_6 {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
Class c1 = Class.forName("reflection.user");
Constructor constructor = c1.getConstructor(int.class,String.class,boolean.class);
user u1 = (user) constructor.newInstance(1,"a",true);
System.out.println(u1);
Method setId = c1.getDeclaredMethod("setId", int.class);
user u = (user)c1.newInstance();
setId.invoke(u,33);
System.out.println(u.getId());
user u2 = (user) c1.newInstance();
Field name = c1.getDeclaredField("username");
name.setAccessible(true);
name.set(u2,"hh");
System.out.println(u2.getUsername());
}
}