package test;
import java.util.Scanner;
import java.lang.reflect.Field;//字段(属性)
import java.lang.reflect.Method;//方法
/** 反射演示 */
public class ReflectionDemo {
public static void main(String[] args)
throws Exception {
Scanner s = new Scanner(System.in);
String className = s.nextLine();//java类的完整路径
Class cls = Class.forName(className);
Method[] methods = cls.getMethods();
Field[] fields = cls.getDeclaredFields();
//迭代出属性的名字...
for (Method m : methods) {
System.out.println(m.getName());
}
for (Field f : fields) {
System.out.println(f.getName());
}
String methodName = s.nextLine();//fk
for (Method m : methods) {
if(m.getName().equals(methodName)){
Object obj = cls.newInstance();
//方法的调用, 在obj对象上调用m方法
// 传递参数: new Object[]{}, 无参数
//val是方法的返回值
Object val = m.invoke(obj, new Object[]{1});
System.out.println(val);
}
}
}
}
class Woo{
int i = 1;
public int hi(int i){
System.out.println("Hi");
return i;
}
}
class Moo{
int j = 2;
public void fk(int j){
System.out.println("fk");
}
}
import java.util.Scanner;
import java.lang.reflect.Field;//字段(属性)
import java.lang.reflect.Method;//方法
/** 反射演示 */
public class ReflectionDemo {
public static void main(String[] args)
throws Exception {
Scanner s = new Scanner(System.in);
String className = s.nextLine();//java类的完整路径
Class cls = Class.forName(className);
Method[] methods = cls.getMethods();
Field[] fields = cls.getDeclaredFields();
//迭代出属性的名字...
for (Method m : methods) {
System.out.println(m.getName());
}
for (Field f : fields) {
System.out.println(f.getName());
}
String methodName = s.nextLine();//fk
for (Method m : methods) {
if(m.getName().equals(methodName)){
Object obj = cls.newInstance();
//方法的调用, 在obj对象上调用m方法
// 传递参数: new Object[]{}, 无参数
//val是方法的返回值
Object val = m.invoke(obj, new Object[]{1});
System.out.println(val);
}
}
}
}
class Woo{
int i = 1;
public int hi(int i){
System.out.println("Hi");
return i;
}
}
class Moo{
int j = 2;
public void fk(int j){
System.out.println("fk");
}
}