package day13;
import java.util.Scanner;
public class ClassForNameReflect {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入类名");
String className = scanner.nextLine();
try {
Class cls = Class.forName(className);
System.out.println(cls);
Koo k = new Koo();
Koo k2 = new Koo();
Koo k3 = new Koo();
System.out.println(k==k2);
Object obj = cls.newInstance();
System.out.println(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package day13;
import java.util.Scanner;
public class ClassForNameReflect02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入类名");
String className = scanner.nextLine();
try {
Class cls = Class.forName(className);
Class cls2 = Class.forName(className);
Class cls3 = Class.forName(className);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package day13;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Scanner;
public class ClassForNameReflect03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入类名");
String className = scanner.nextLine();
try {
Class cls = Class.forName(className);
Field[] field = cls.getDeclaredFields();
for(Field f:field){
System.out.println(f);
}
Field felName = cls.getDeclaredField("name");
System.out.println("指定类中的属性:"+felName);
Method[] methods = cls.getDeclaredMethods();
for(Method m:methods){
System.out.println(m);
}
Method method = cls.getDeclaredMethod("test2", String.class,int.class);
System.out.println(method);
Object obj = cls.newInstance();
felName.setAccessible(true);
Object obj2 =felName.get(obj);
System.out.println("name的属性值是:"+obj2);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package day13;
import java.lang.reflect.Method;
import java.util.Scanner;
public class ClassForNameReflect04 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入类名");
String className = scanner.next();
try {
Class cls = Class.forName(className);
Method[] methods = cls.getDeclaredMethods();
for(Method m:methods){
System.out.println(m);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package day13;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class DemoReflect {
public static void main(String[] args) {
test("ABC");
}
public static void test(Object obj) {
Class cls = obj.getClass();
Field[] field = cls.getDeclaredFields();
for(Field f:field){
}
try {
Field fel = cls.getDeclaredField("hash");
} catch (Exception e) {
e.printStackTrace();
}
Method[] methods = cls.getDeclaredMethods();
for(Method m:methods){
System.out.println(m);
}
try {
Method mt = cls.getDeclaredMethod("indexOf", Integer.class);
System.out.println("指定的方法是:"+mt);
} catch (Exception e) {
e.printStackTrace();
}
Constructor[] con = cls.getDeclaredConstructors();
for(Constructor c:con){
System.out.println("对象中的构造方法:"+c);
}
try{
Constructor co = cls.getDeclaredConstructor(byte[].class,String.class);
System.out.println(co);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package day13;
import java.lang.reflect.Method;
import java.util.Scanner;
public class lnvokeMetod {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入类名:");
String className = scanner.nextLine();
System.out.println("请输入方法名");
String methodName = scanner.next();
System.out.println(2);
try {
Class cls = Class.forName(className);
Method method = cls.getDeclaredMethod("test2", String.class,int.class);
System.out.println(method);
Object obj = cls.newInstance();
method.setAccessible(true);
Object obj2 = method.invoke(obj,"测试", 8);
System.out.println(obj2);
} catch (Exception e) {
e.printStackTrace();
}
}
}