本文共 1676 字,大约阅读时间需要 5 分钟。
Class clazz = Person.class;//创建运行时类的对象Person p = (Person) clazz.newInstance();//1. getDeclaredField(String fieldName):获取运行时类中指定变量名的属性Field name = clazz.getDeclaredField("name");//2.保证当前属性是可访问的name.setAccessible(true);//3.获取、设置指定对象的此属性值name.set(p, "Tom");System.out.println(name.get(p));
Class clazz = Person.class; //创建运行时类的对象 Person p = (Person) clazz.newInstance(); /* 1.获取指定的某个方法 getDeclaredMethod():参数1 :指明获取的方法的名称 参数2:指明获取的方法的形参列表 */ Method show = clazz.getDeclaredMethod("show", String.class); //2.保证当前方法是可访问的 show.setAccessible(true); /* 3. 调用方法的invoke():参数1:方法的调用者 参数2:给方法形参赋值的实参 invoke()的返回值即为对应类中调用的方法的返回值。 */ Object obj = show.invoke(p, "中国");//String nation = p.show("CHN"); System.out.println(obj); System.out.println("*************如何调用静态方法*****************"); // private static void showDesc() Method showDesc = clazz.getDeclaredMethod("showDesc", String.class); showDesc.setAccessible(true); //如果调用的运行时类中的方法没返回值,则此invoke()返回null// Object returnDesc = showDesc.invoke(null, "可爱");此方法与下列方法效果一样,// 因为此刻已经表明运行类具体是哪个类 Object returnDesc = showDesc.invoke(Person.class, "可爱"); System.out.println(returnDesc);
Class clazz = Person.class;//private Person(String name)/*1.获取指定的构造器getDeclaredConstructor():参数:指明构造器的参数列表 */Constructor cons = clazz.getDeclaredConstructor(String.class);//2.保证此构造器是可访问的cons.setAccessible(true);//3.调用此构造器创建运行时类的对象Person p = (Person) cons.newInstance("朴灿烈");System.out.println(p);//Person{name='朴灿烈', age=0, id=0, height=0, weight=0.0}
转载地址:http://gvuki.baihongyu.com/