获取运行时类的Class的四种方法。

person  类:

package bao;


public class Person {


private  String name;
private  int age;

//创建类时尽量造一个空参构造器
public Person() {
super();
}
public Person(String name) {
super();
this.name = name;
}
public Person(String name, int age) {
super();
this.name = name;
this.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;
}

public void show(){
System.out.println("我是一个中国人");
}
public void display(String name){
System.out.println("中国人"+name);
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}

}

测试方法:

 @Test
 //如何获取Class类的实例3种
 public void test3() throws ClassNotFoundException{
 //第一种  调用运行时类的本身的.class来获取
Class<Person> clazz1=Person.class;
System.out.println(clazz1.getName());
 //第二种 调用调用运行时类的对象来获取
Person p1=new Person();
 Class clazz2 = p1.getClass();
 System.out.println(clazz2.getName());
 //第三种 通过调用Class的静态方法获取的
 String className="bao.Person";//包名+类名
 Class clazz3=Class.forName(className);
 System.out.println(clazz3.getName());
 //第四种 通过类得加载器进行加载
 ClassLoader classloader = this.getClass().getClassLoader();
Class clazz4= classloader.loadClass(className);//第三种也要用到类名
System.out.println(clazz4.getName());
 
System.out.println(clazz1==clazz2);//true
System.out.println(clazz1==clazz3);//true
System.out.println(clazz1==clazz4);//true
//通过上面也可以看出是运行时类只有一个,只加载一次。
 
}

  //创建运行时类的实例

@Test
public void Test1() throws Exception{
Class<Person> clazz1 = Person.class;//第一种方法
Person p=new Person();
Class clazz2 = p.getClass();//第二种方法
String className="bao.Person";
Class clazz3=Class.forName(className);
/*
* 要想能够创建运行时类的对象,使用 newInstance(),实际上是调用了
* 运行时类的空参构造器。要满足两点:
* 1.要有运行时类的空参构造器
*  2.构造器的权限修饰符要足够。

*/
Person p1 = clazz1.newInstance();
Person p2 = (Person) clazz2.newInstance();
Person p3 = (Person) clazz3.newInstance();
System.out.println(p1);
System.out.println(p2);
System.out.println(p3);

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值