java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(1)

  java学习一段时间之后,大家可能经常会听到反射这个词,那么说明java已经学习到一个高一点的层次了。接下来我会一步步和大家一起揭开java高级特性反射的神秘面纱。

  首先介绍下类对象这个概念,可能会经常用到这个概念:

    类对象:java中有句很经典的话"万事万物皆对象",相信大家都不陌生,这句话告诉了我们java的特征之一,那就是面向对象。java中类的概念我们都很熟悉,既然万事万物皆是对象,那么类是谁的对象呢?<对象的概念:一个类的实例>换句话说,类是谁的实例。如此就有了类对象这个概念。在java中有个类的名字叫Class,任何一个类都是这个Class类的对象。

    下面用几行代码向大家展示如何获取类对象:

    1.新建一个包com.cx.bean,在包下创建一个类Book

Book.java文件

package com.cx.bean;

public class Book {
    private int id;
    private String name;
    private String type;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
}

  1.新建一个包com.cx.main,在包下创建一个类Test.

Test.java文件

package com.cx.main;
import com.cx.bean.Book;

public class Test {
    public static void main(String[] args) {
        Class c1=null;
        Class c2=null;
        Class c3=null;
/**
 * 获取类对象:类对象本身就是一个类
 */
        //第一种方式:通过Class对象的静态forName()方法参数为完整类路径名称
        try {
            c1 = Class.forName("com.cx.bean.Book");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println("第一种:"+c1);//:class com.cx.bean.Book

        //第二种方式:通过该类实例的getClass()方法获取类对象
        Book bo=new Book();
        Object ob=bo;
        System.out.println("第二种:"+ob.getClass());

        //第三种:类名.class
        c3=Book.class;
        System.out.println("第三种:"+c3);
    }
}/**运行结果:  

第一种:class com.cx.bean.Book
第二种:class com.cx.bean.Book
第三种:class com.cx.bean.Book

通过这段代码可以清楚的向大家展示如何获取一个类对象.

*/
时间: 2024-10-21 00:20:00

java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(1)的相关文章

Java进阶之reflection(反射机制)——反射概念与基础

反射机制是Java动态性之一,而说到动态性首先得了解动态语言.那么何为动态语言? 一.动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化.比如常见的JavaScript就是动态语言,除此之外Ruby,Python等也属于动态语言,而C.C++则不属于动态语言. 二.Java是动态语言吗? 从动态语言能在运行时改变程序结构结构或则变量类型上看,Java和C.C++一样都不属于动态语言. 但是JAVA却又一个非常突出的与动态相关的机制:反射机制.

java进阶三:反射

1.得到各个字节码对应的实例对象(Class类型)的三种方式,示例如下: 类名.class,比如,System.class 对象.getClass(),比如,new Date().getClass() Class.forName("类名"),比如,Class.forName("java.util.Date") 2.Constructor类的使用,Constructor类代表某个类中的一个构造方法 得到某个类所有的构造方法: Constructor[] constru

Java进阶之多线程

多线程 多线程(multiple thread)是计算机实现多任务并行处理的一种方式. 在单线程情况下,计算机中存在一个控制权,并按照顺序依次执行指令.单线程好像是一个只有一个队长指挥的小队,整个小队同一个时间只能执行一个任务. 单线程 在多线程情境下,计算机中有多个控制权.多个控制权可以同时进行,每个控制权依次执行一系列的指令.多线程好像是一个小队中的成员同时执行不同的任务. 多线程 传统意义上,多线程是由操作系统提供的功能.对于单核的CPU,硬件中只存在一个线程.在操作系统的控制下,CPU会

Java进阶05 多线程

链接地址:http://www.cnblogs.com/vamei/archive/2013/04/15/3000898.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 多线程 多线程(multiple thread)是计算机实现多任务并行处理的一种方式. 在单线程情况下,计算机中存在一个控制权,并按照顺序依次执行指令.单线程好像是一个只有一个队长指挥的小队,整个小队同一个时间只能执行一个任务. 单线程 在多线程情境

JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Fiald,Method,反射Main方法,数组的反射和实践

JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Fiald,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识Class类 想要反射,你就必须要了解一个类--Class,我们知道,java程序中的各个java类都属于同一事物,我们通常用Classliability描述对吧,反射这个概念从JDK1.2就出来了,历史算是比较悠久了,这个Class可不是关键字哦,这个是一个类,他代表的是一类事物: 我们归根结底就

编程基础知识——C++能不能支持Java和ObjC的反射?

C++能不能支持Java和ObjC的反射? 要回答这个问题,首先我们要清楚什么是反射.什么是反射? 教科书的解释我就不说了,(^o^)其实我也记不得.实际开发应用的反射就是在没有某个类型的头文件或者类结构定义的情况下,存取这个类型的对象的成员字段的值,调用这个对象的成员函数(方法). 比如我有定义了一个类型 Class  A,里面有 a,b,c三个字段,有fun()函数.现在我手里只有一个 void* pA,注意它的类型只是一个void指针,我手里也没有Class的头文件,我要怎么样得到,a,b

Java进阶 四 Java反射TypeToken解决泛型运行时类型擦除问题

在开发时,遇到了下面这条语句,不懂,然习之. private List<MyZhuiHaoDetailModel> listLottery = new ArrayList<MyZhuiHaoDetailModel>(); Gson gson=new Gson(); JSONObject object=new JSONObject(callbackValue); listLottery =  gson.fromJson(object.getString("lists&quo

Java进阶 六 Java反射机制可恶问题NoSuchFieldException

作为一种重要特性,Java反射机制在很多地方会用到.在此做一小结,供朋友们参考. 首先从一个问题开始着手. 可恶的问题又来了,NoSuchFieldException,如下图所示: 完全不知道这个question是从哪里来的.以前也遇到过这样的问题,后来解决了,但是没有写文档,再次相遇这样的问题,傻了. 经过上网一番查找,发现遇到这个问题的小盆友还真不少,这个问题是属于java反射机制里的. 这是一个反射对象时候的异常,已经被捕获了的.这个报错代码是混淆了的,是不是这个question对象被混淆

【Java基础】java类加载过程与反射机制

1.类的加载.连接和初始化 当程序使用某个类时,如果该类还未被加载到内存中,则系统会通过加载.连接.初始化三个步骤来对类进行初始化.如果没有意外,jvm将会连续完成这三个步骤,有时也把这三个步骤统称为类的加载和类初始化. 1.1 类的加载 类加载指的是将类的class文件读入内存,并且为之创建一个java.lang.Class对象,也就是说当程序中使用任何类时,都会为之创建一个java.lang.Class对象.类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器是前面所有程序运行的基