java反射创建对象三种_Java之反射--8.1.1--获取Class对象的三种方式

package com.aowin.getclass;

//RTTI:运行时刻类型判定

//两种形式的rtti

//1.传统的rtti

//2.反射机制(reflection)

//反射:通过对象获取类的信息,作用:

//1.反射创建对象

//2.分析类的结构

//反射机制的源头是Class对象

//Class类和Class对象

//Class对象是对类的描述,每一个类都有一个Class对象,刚开始保存在同名的.class文件(在类编译通过后产生)中,随类的第一次加载而加载

//Class对象对于每一个类有且只有一个

//Class类是Class对象所属的类,它的构造方法被私有化了

//获取Class对象的方式有3种:

//1.通过对象.getClass()方法

//2.通过Class类中的静态的forName(参数)方法

//3.通过类名.class字面量

//注意:

//1.三种方式获得的Class对象是同一个

//2.class字面量可用于基本数据类型

public class Test {

public static void main(String[] args) throws ClassNotFoundException {

Object obj = new Student(1001);

//获取Class对象的第一种方式,通过getClass()方法,需要提前创建类的一个对象

Class c1 = obj.getClass();  //获取obj对象所属类的Class对象

String name = c1.getName();  //获得Class对象表示的类的类名

System.out.println(name);

System.out.println(c1);

//获取Class对象的第二种方式,通过Class类中的静态的forName(参数)方法

//参数是包含完整类名(包名.类名)的字符串

//多用在加载驱动的时候,不需要提前创建对象

Class c2 = Class.forName("com.aowin.getclass.Student");

System.out.println(c2);

//获取Class对象的第三种方式,通过class字面量,基本类型也可以使用class字面量

//多用于参数的传递

Class c3 = Student.class;

System.out.println(c3);

System.out.println(double.class);

//三种方式获得的Student类的Class对象是同一个

System.out.println(c1==c2);       //true

System.out.println(c2==c3);        //true

System.out.println(c1==c3);     //true

}

}

package com.aowin.getclass;

public class Person {

public String color;

}

package com.aowin.getclass;

public class Student extends Person{

//成员变量

String name;

private int age;

public int id;

//构造方法

public Student(){

}

public Student(int id){

this.id = id;

}

private Student(String name, int age){

this.name = name;

this.age = age;

}

//setter,getter

//学习

public void study(){

System.out.println("学习....");

}

public void study(int hour){

System.out.println("学了"+hour+"小时");

}

//睡觉

private void sleep(){

System.out.println("睡觉...");

}

@Override

public String toString() {

return "Student [name=" + name + ", age=" + age + ", id=" + id + "]";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值