Test1 test1 = new Test1(); test1.setProp1("Hello"); test1.setProp2(100); Class clazz = Test1.class;//获取Class对象方式1 // Class clazz2 = Class.forName("com.jdyh.worker.project.base.utils.date.dd.Test1");//获取Class对象方式2 String clazzName = clazz.getName();//获取类名,含包名 String clazzSimpleName = clazz.getSimpleName();//获取类名,不含包名 System.out.println("--1-->" + "获取类名,含包名:" + clazzName + ";\t 获取类名,不含包名:" + clazzSimpleName); int mod = clazz.getModifiers();//获取类修饰符 System.out.println("--2-->" + "判断类修饰符.isPublic?:" + Modifier.isPublic(mod));//判断类修饰符 System.out.println("--3-->" + "判断类修饰符.isProtected?:" + Modifier.isProtected(mod));//判断类修饰符 Package p = clazz.getPackage();//获取包 System.out.println("--4-->" + "获取包:" + p); Class superClass = clazz.getSuperclass();//获取父类 System.out.println("--5-->" + "获取父类:" + superClass); Class[] interfaces = clazz.getInterfaces();//获取实现接口 System.out.println("--6-->" + "获取实现接口:" + interfaces.length); Constructor[] cons = clazz.getConstructors();//构造方法 System.out.println("--7-->" + "构造方法:" + cons.length); Method[] methods = clazz.getMethods();//获取所有方法 System.out.println("--8-->" + "获取所有方法:" + methods.length); for (Method method : methods) { System.out.println("--9-->" + "获取所有方法-遍历输出:" + method); } Method[] methods2 = clazz.getMethods();//获取私有方法 System.out.println("--10-->" + "获取私有方法:" + methods2.length); for (Method method : methods2) { System.out.println("--11-->" + "获取私有方法-输出:" + method.getName()); } Method method = clazz.getMethod("getProp1", null);//获取指定方法 System.out.println("--12-->" + "获取getProp1方法:" + method); Object methodVlaue = method.invoke(test1, null);//调用方法 System.out.println("--13-->" + "执行getProp1方法:" + methodVlaue); Method method3 = clazz.getMethod("setProp3", Double.class);//获取指定方法 System.out.println("--14-->" + "getMethod(,):" + method3); Object methodVlaue3 = method3.invoke(test1, 2.0);//调用setter方法,该方法没有返回值,所以methodVlaue3为null;此处注意参数2.0 ,不能用null System.out.println("--15-->" + "method.invoke(,):" + methodVlaue3); Field[] fields = clazz.getDeclaredFields();//获取变量 System.out.println("--16-->" + "getDeclaredFields:" + fields.length); for (Field field : fields) { field.setAccessible(true); field.set(test1, null);//设置字段的值 System.out.println("--17-->" + "field.getAnnotations:" + field.getAnnotations().length + "\tfield.getName:" + field.getName() + "\tfield.get:" + field.get(test1));//获取实例属性名和值 } Annotation[] annos = clazz.getAnnotations();//获取类注解 System.out.println("--18-->" + "getAnnotations:" + annos.length);
public static class Test1 { private String prop1; private Integer prop2; private Double prop3; public String getProp1() { return prop1; } public void setProp1(String prop1) { this.prop1 = prop1; } public Integer getProp2() { return prop2; } public void setProp2(Integer prop2) { this.prop2 = prop2; } public Double getProp3() { return prop3; } public void setProp3(Double prop3) { this.prop3 = prop3; } }
输出:
--1-->获取类名,含包名:com.jdyh.worker.project.base.utils.date.dd$Test1; 获取类名,不含包名:Test1 --2-->判断类修饰符.isPublic?:true --3-->判断类修饰符.isProtected?:false --4-->获取包:package com.jdyh.worker.project.base.utils.date --5-->获取父类:class java.lang.Object --6-->获取实现接口:0 --7-->构造方法:1 --8-->获取所有方法:15 --9-->获取所有方法-遍历输出:public java.lang.String com.jdyh.worker.project.base.utils.date.dd$Test1.getProp1() --9-->获取所有方法-遍历输出:public void com.jdyh.worker.project.base.utils.date.dd$Test1.setProp3(java.lang.Double) --9-->获取所有方法-遍历输出:public java.lang.Integer com.jdyh.worker.project.base.utils.date.dd$Test1.getProp2() --9-->获取所有方法-遍历输出:public java.lang.Double com.jdyh.worker.project.base.utils.date.dd$Test1.getProp3() --9-->获取所有方法-遍历输出:public void com.jdyh.worker.project.base.utils.date.dd$Test1.setProp1(java.lang.String) --9-->获取所有方法-遍历输出:public void com.jdyh.worker.project.base.utils.date.dd$Test1.setProp2(java.lang.Integer) --9-->获取所有方法-遍历输出:public final void java.lang.Object.wait() throws java.lang.InterruptedException --9-->获取所有方法-遍历输出:public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException --9-->获取所有方法-遍历输出:public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException --9-->获取所有方法-遍历输出:public boolean java.lang.Object.equals(java.lang.Object) --9-->获取所有方法-遍历输出:public java.lang.String java.lang.Object.toString() --9-->获取所有方法-遍历输出:public native int java.lang.Object.hashCode() --9-->获取所有方法-遍历输出:public final native java.lang.Class java.lang.Object.getClass() --9-->获取所有方法-遍历输出:public final native void java.lang.Object.notify() --9-->获取所有方法-遍历输出:public final native void java.lang.Object.notifyAll() --10-->获取私有方法:15 --11-->获取私有方法-输出:getProp1 --11-->获取私有方法-输出:setProp3 --11-->获取私有方法-输出:getProp2 --11-->获取私有方法-输出:getProp3 --11-->获取私有方法-输出:setProp1 --11-->获取私有方法-输出:setProp2 --11-->获取私有方法-输出:wait --11-->获取私有方法-输出:wait --11-->获取私有方法-输出:wait --11-->获取私有方法-输出:equals --11-->获取私有方法-输出:toString --11-->获取私有方法-输出:hashCode --11-->获取私有方法-输出:getClass --11-->获取私有方法-输出:notify --11-->获取私有方法-输出:notifyAll --12-->获取getProp1方法:public java.lang.String com.jdyh.worker.project.base.utils.date.dd$Test1.getProp1() --13-->执行getProp1方法:Hello --14-->getMethod(,):public void com.jdyh.worker.project.base.utils.date.dd$Test1.setProp3(java.lang.Double) --15-->method.invoke(,):null --16-->getDeclaredFields:3 --17-->field.getAnnotations:0 field.getName:prop1 field.get:null --17-->field.getAnnotations:0 field.getName:prop2 field.get:null --17-->field.getAnnotations:0 field.getName:prop3 field.get:null --18-->getAnnotations:0
来源: https://www.cnblogs.com/xmqa/p/8796859.html
原文:https://www.cnblogs.com/hahajava/p/10827829.html