文档章节

Java之反射--8.1.1--获取Class对象的三种方式

Watto
 Watto
发布于 2017/04/06 14:30
字数 561
阅读 1
收藏 0

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 + "]";
    }
    
    

}
 

© 著作权归作者所有

Watto
粉丝 1
博文 71
码字总数 27737
作品 0
杭州
程序员
私信 提问
Java面试基础篇——第十篇:反射的原理

什么是Java的反射机制?指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。对于任意一个对象,都能调用它的任意一个方法。这种动态获取信息,以及动态调用对象方法的功能叫Jav...

developlee的潇洒人生
2018/07/24
0
0
Java基础之反射(非常重要)

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道...

Java-老刘
2018/05/15
0
0
Java反射机制(未完成,还缺最后一个)

1、背景 1)Reflection也就是反射 是Java被视为动态(或准动态)语言的一个关键性质 2)反射机制指的是程序在运行时能够获取任何类的内部所有信息 2、实现功能概述 1)只要给定类的全名,即可...

萧小蚁
2015/05/03
0
0
java语言反射的概述以及三种获取字节码文件对应的Class类型的对象的方式

反射的概述:   JAVA反射机制是在运行状态中,   对于任意一个类,都能够知道这个类的所有属性和方法(动态获取的信息);   对于任意一个对象,都能够调用它的任意一个方法和属性(动态调...

黑泽明军
2018/04/12
0
0
编程思想 之「运行时类型识别、反射」

版权声明:Follow your heart and intuition. https://blog.csdn.net/qq_35246620/article/details/79576706 温馨提示:本系列博文(含示例代码)已经同步到 GitHub,地址为「java-skills」,...

维C果糖
2018/03/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
2
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部