1、已知类名,获取属性名字
//加载类
Class<?> classType=Class.forName("com...."); //包+类名
//获取属性名字
Filed[] fields=class.Type.getDeclaredFields();
//取出每一个属性
for(int i=0;i<fields.length;i++){
Field field=fields[i];
//获取属性名字
String fieldName=field.getName();
}
2、已知类名、获取方法名字
//加载类
Class<?> classType=Class.forName("类名..包名");
//获取方法
Method[] methods=classType.getDeclaredMethods();
//通过for循环得到方法名字
for(int i=0;i<methods.length;i++){
String methodName=methods[i].getName;
}
3、通过上面获取的方法,然后获取该方法的参数类型
例如public void sing(String name){ //代码 }
方法sing的参数类型就是String
//获取本方法的参数类型,并存入数组
Class<?>[] parameterTypes=methods[i].getParemeterTypes();
//获取参数名字
for(int j=0;j<parameterTypes[j].length;j++){
String parameterName=parametertypes[j].getName();
}
4、运行方法
公式:方法.invoke(对象,参数1,参数2);
如已知:public void sing(String name,int age){//代码}
01、通过方法名字先得到sing方法,(方法名,参数类型1.class,参数类型2.class)
Method method=classType.getMethod(sing,String.class,int.class);
02、运行该方法
method.invoke(对象,name,age);
说明:classType为类的字节码文件
5、获取类的字节码文件的方法
01、已知类名,获取类的字节码方法看最上面的1
02、已知对象,获取类的字节码
Class classType=对象.getClass();
具体例子看下面链接
https://blog.youkuaiyun.com/nba_linshuhao/article/details/82555689
https://blog.youkuaiyun.com/nba_linshuhao/article/details/82561165
https://blog.youkuaiyun.com/nba_linshuhao/article/details/82619888