-
class A{ public void print(){ System.out.println("helloworld");} public void print(int a,int b){ System.out.println(a+b);} public void print(String a,String b){ System.out.println(a.toUpperCase()+","+b.toLowerCase());}}查看全部
-
//要获取print(int ,int )方法 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型 A a1 = new A(); Class c = a1.getClass(); 2.获取方法 名称和参数列表来决定 * getMethod获取的是public的方法 * getDelcaredMethod自己声明的方法 try {//Method m = c.getMethod("print", new Class[]{int.class,int.class}); Method m = c.getMethod("print", int.class,int.class); //方法的反射操作 //a1.print(10, 20);方法的反射操作是用m对象来进行方法调用 和a1.print调用的效果完全相同 //方法如果没有返回值返回null,有返回值返回具体的返回值 //Object o = m.invoke(a1,new Object[]{10,20}); Object o = m.invoke(a1, 10,20); //获取方法print(String,String) Method m1 = c.getMethod("print",String.class,String.class); //用方法进行反射操作 //a1.print("hello", "WORLD"); o = m1.invoke(a1, "hello","WORLD"); // Method m2 = c.getMethod("print", new Class[]{}); Method m2 = c.getMethod("print"); // m2.invoke(a1, new Object[]{}); m2.invoke(a1); } catch (Exception e) { e.printStackTrace();} }}查看全部
-
方法的反射查看全部
-
java中集合的泛型是防止输入错误的,只有在编译阶段有效,绕过了编译就无效了 反射的操作都是在编译之后的操作查看全部
-
方法的反射查看全部
-
获取类的方法信息查看全部
-
获取参数类型的代码查看全部
-
/** * 成员变量也是对象 * java.lang.reflect.Field * Field类封装了关于成员变量的操作 * getFields()方法获取的是所有public的成员变量 * getDeclaredFields()获取的是所有自定义的成员变量 */ /* * 构造函数也是对象 * java.lang.Constructor封装了对构造函数的信息 * getConstructors()获取所有public的构造函数 * getDeclaredConstructors()获取所有的构造函数信息 */查看全部
-
@ClassUtil.java——(下) /** * 打印对象的构造函数的信息 * @param obj */ public static void printConMessage(Object obj){ Class c = obj.getClass(); /* * 构造函数也是对象 * java.lang. Constructor中封装了构造函数的信息 * getConstructors获取所有的public的构造函数 * getDeclaredConstructors得到所有的构造函数 */ //Constructor[] cs = c.getConstructors(); Constructor[] cs = c.getDeclaredConstructors(); for (Constructor constructor : cs) { System.out.print(constructor.getName()+"("); //获取构造函数的参数列表--->得到的是参数列表的类类型 Class[] paramTypes = constructor.getParameterTypes(); for (Class class1 : paramTypes) { System.out.print(class1.getName()+","); } System.out.println(")"); } } }查看全部
-
类型的说明查看全部
-
测试类代码查看全部
-
ClassUtil类代码: //首先要获取类的类类型 Class c = obj.getClass(); System.out.println("类的类名称是:"+c.getName()); /** * Method类,方法对象 * 一个成员方法就是一个method对象 * getMethods()获得的就是所有public的方法,包括从父类继承而来的 * getDeclaredMethods()是获取该类自己声明的所有方法,不考虑访问权限 */ Method[] m = c.getMethods(); for(int i =0;i<m.length;i++) { //获得方法的返回值类型的类类型 Class returntype = m[i].getReturnType(); System.out.print(returntype.getName()+" "); //获得方法的名称 System.out.print(m[i].getName()+"("); //获取方法的参数类型-->得到的是参数列表的类型的类类型 Class[] paramstype = m[i].getParameterTypes(); for (Class class1 : paramstype) { System.out.print(class1.getName()+","); } System.out.println(")"); }查看全部
-
Class.forName("类的全称")查看全部
-
OfficeBetter类查看全部
-
Word类实现OfficeAble接口查看全部
举报
0/150
提交
取消