java反射常用操作
来源:互联网 发布:银行卡复印件制作软件 编辑:程序博客网 时间:2024/05/22 01:33
public static void getFieldsInfo(Field[] fields){
for(Field f:fields){
//打印修饰符
int mo = f.getModifiers();
System.out.print(Modifier.toString(mo));
//打印方法类型
System.out.print(" "+f.getType());
//打印变量名称
System.out.println(" "+f.getName());
}
}
2.//获取构造函数信息
public static void getConstructInfo(
@SuppressWarnings("rawtypes") Constructor[] cons) {
System.out.println("构造函数");
for (Constructor<?> con : cons) {
// 打印修饰符
int mo = con.getModifiers();
System.out.print(Modifier.toString(mo));
// 打印构造函数名
System.out.print(" " + con.getName());
// 获取参数;
getParmsInfo(con.getParameterTypes());
System.out.println();
}
}
3.//获取方法信息
public static void getMethodsInfo(Method[] method) {
for (Method mt : method) {
int m = mt.getModifiers();
// 修饰符
System.out.print(Modifier.toString(m) + " ");
// 获取返回类型
System.out.print(mt.getReturnType());
System.out.print(" " + mt.getName());
getParmsInfo(mt.getParameterTypes());
}
}
4.//获取方法参数信息
public static void getParmsInfo(@SuppressWarnings("rawtypes") Class[] parm) {
System.out.print(" (");
for (Class<?> c : parm) {
System.out.print(c.getName() + " ");
}
System.out.print(")");
System.out.println();
}
5.//获取内部类信息
public static void getInerclassInfo(
@SuppressWarnings("rawtypes") Class[] innerClass) {
System.out.println("内部类");
for (@SuppressWarnings("rawtypes")
Class c : innerClass) {
System.out.println(c.getName() + "{");
getMethodsInfo(c.getDeclaredMethods());
System.out.println("}");
}
}
******测试*******
public class Apple{
public int eat(int i,int j){
System.out.println("总共"+total+"个苹果,吃了"+i+"个苹果");
}
public static void main(String[] args) {
Apple apple = null;
try {
//只有当类存在默认的构造方法时才能用newInstance()获得对象
apple = (Apple) Class.forName("com.cn.hkl.reflect.Apple")
.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
getMethodsInfo(apple.getClass().getMethods());
getConstructInfo(apple.getClass().getConstructors());
getFieldsInfo(apple.getClass().getFields());
//动态调用方法
try {
Method c =apple.getClass().getMethod("eat",int.class,int.class);
c.invoke(apple,5,2);
} catch (NoSuchMethodException | SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
- java反射常用操作
- java反射技术常用操作
- 常用反射操作
- Java反射常用方法
- Java反射常用类
- java 反射常用方法
- JAVA反射常用方法
- java反射常用方法
- Java反射常用API
- BLReflection - 反射常用操作类
- C#反射操作常用方法
- C#反射操作常用方法
- java反射操作
- java 常用的反射方法
- JAVA反射机制常用方法
- JAVA反射--一些常用方法
- Java 反射常用方法示例
- 整理Java反射常用方法
- C语言笔记
- 对于不可预知错误的探索与思考
- Android 开发中用到的几个多线程解析
- 详解Timer
- js 截取所有逗号
- java反射常用操作
- 从 iBatis 到 MyBatis
- python报错:pywintypes.com_error: (-2147221005,,None,none)
- 目前最好用的软件下载网站
- ios的手势操作之UIGestureRecognizer浅析
- java CyclicBarrier (栅栏) 作用是使 指定个数的请求线程互相等待, 拦截在某个公共屏障点(就是栅栏外面)然后全到齐了一起访问这个屏障点的内容
- js - 对象化
- ftp 进一步学习
- HibernateTemplate执行普通sql语句