public class ClazzUtils {
// 通过反射获取父类
public static Class getSupperCls(String clsRef){
Class<?> c=null;
try {
c=Class.forName(clsRef);
System.out.println(c.getName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Class<?> s=c.getSuperclass();
System.out.println(s);
return s;
}
// 通过反射获取构造方法
public static Constructor<?>[] getConstructors(String clsRef){
Class<?> cls = null;
try {
cls = Class.forName(clsRef);
System.out.println(cls.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Constructor<?>[] cons = cls.getConstructors();
return cons;
}
// 通过反射所有获取方法
public static Method[] getMethods(String clsRef){
Class<?> cls = null;
try {
cls = Class.forName(clsRef);
System.out.println(cls.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Method mds[]=cls.getMethods();
return mds;
}
// 通过反射获取属性名
public static Field[] getDeclaredFields(String clsRef){
Class<?> cls = null;
try {
cls = Class.forName(clsRef);
System.out.println(cls.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Field fs[]=cls.getDeclaredFields();
for(Field f:fs){
System.out.println(f);
}
return fs;
}
//通过反射调用方法,主要通过invoke方法
public static void invokeMethod(){
Class<?> c=null;
try {
c=Class.forName("com.demo.Student");
System.out.println(c.getName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Object obj=c.newInstance();
Method m2=obj.getClass().getMethod("setName", String.class);
m2.invoke(obj, "王五");
Method m=obj.getClass().getMethod("getName");
String name=(String) m.invoke(obj);
System.out.println("name="+name);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//通过反射操作属性,java里反射可以操作私有属性,只需要设置下
public static void text(){
Class<?> c=null;
try {
c=Class.forName("com.demo.Student");
System.out.println(c.getName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Object obj=c.newInstance();
Field nameField=c.getDeclaredField("name");
nameField.setAccessible(true);
nameField.set(obj, "张三");
System.out.println("name="+nameField.get(obj));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java反射常用方法
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。