标签:type throw 引用数据类型 方法区 如何使用 const double zha name
package com.moneky1024; public class ClassObjectTest { public static void main(String[] args) throws ClassNotFoundException { //1.使用数据类型.class的方式来获取该类型的Class对象 //class java.lang.String System.out.println(String.class);//自动调用toString()方法 System.out.println(int.class); //int System.out.println(void.class); //void System.out.println(); //2.使用对象.getClass()的方式来获取该类型的Class对象 String s1 = new String("GoodMorning"); System.out.println(s1.getClass());//class java.lang.String Integer it1 = new Integer(66); System.out.println(it1.getClass());//class java.lang.Integer //int num = 118; //System.out.println(num.getClass()); error System.out.println(); //3.使用包装类的TYPE属性来获取基本数据类型的Class对象 System.out.println(Integer.TYPE); // int System.out.println(Integer.class);//class java.lang.Integer System.out.println(); //4.使用Class类的forName()方法获取Class对象 //class java.lang.String System.out.println(Class.forName("java.lang.String")); //System.out.println(Class.forName("int")); error } }
package com.moneky1024; public class Person { private String name; private int age; public Person() { super(); } public Person(String name, int age) { super(); setName(name); setAge(age); } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package com.moneky1024; import java.lang.reflect.Constructor; public class Test { public static void main(String[] args) throws Exception { //1.创建Person类型的对象 Person p = new Person(); //调用无参构造方法 System.out.println(p); //null 0 System.out.println(); //2.获取Person类的Class对象并创建实例打印 null 0 System.out.println(Class.forName("xdl.day21.Person").newInstance()); System.out.println(); Person p2 = new Person("zhangfei", 30); System.out.println(p2); //zhangfei 30 System.out.println(); //1.获取Class对象,使用forName()方法 Class c1 = Class.forName("xdl.day21.Person"); //2.获取对应类中的构造方法,形参类型分别为:String 和 int Constructor cs1 = c1.getConstructor(String.class, int.class); //3.调用该构造方法创建新实例,并指定初始值,打印新实例的结果 System.out.println(cs1.newInstance("guanyu", 35));//guanyu 35 } }
class java.lang.String int void class java.lang.String class java.lang.Integer int class java.lang.Integer class java.lang.String
public Person(String name, int age) { super(); setName(name); setAge(age); }
Constructor cs1 = c1.getConstructor(String.class, int.class);
package com.monkey1024; import java.lang.reflect.Field; public class FieldTest { public static void main(String[] args) throws Exception{ //1.获取Class对象括号中 是 包名+类名 Class<?> c1 = Class.forName("com.monkey1024.Person"); //2.创建一个Person类型的对象,并传递实参 //为了得到对应的构造方法 // 传参 Person p = (Person) c1.getConstructor(String.class,int.class).newInstance("zhangfei", 30); //3.获取对应类中指定的成员变量 Field f1 = c1.getDeclaredField("name"); //提供 指定的成员变量 名,获得该指定的变量 //4.设置可以访问私有成员变量 f1.setAccessible(true); //若这行代码没有,则私有变量 不能被成功访问 //5.获取指定对象中此成员变量的数值并打印出来 System.out.println(f1.get(p)); // zhangfei f1.get(p)表示 去这个p对象中,找到名字为 name 的成员变量,并返回 这个变量 //6.修改指定对象中此成员变量的数值修改为"guanyu" f1.set(p, "guanyu"); System.out.println(f1.get(p)); // guanyu } }
zhangfei
guanyu
package com.monkey1024; import java.lang.reflect.Method; public class MethodTest { public static void main(String[] args) throws Exception { //1.获取Class对象 Class c1 = Class.forName("com.monkey1024.Person"); //2.使用有参构造方法创建该类的实例 Person p = (Person) c1.getConstructor(String.class, int.class).newInstance("zhangfei", 30); //3.获取对应类中指定的成员方法 Method m1 = c1.getMethod("toString"); //4.使用该对象调用此方法,并打印结果 System.out.println(m1.invoke(p));// zhangfei 30 } }
Person [name=zhangfei, age=30]
标签:type throw 引用数据类型 方法区 如何使用 const double zha name
原文地址:https://www.cnblogs.com/penguin1024/p/11808149.html