`

java反射基础

    博客分类:
  • J2SE
阅读更多

要想了解反射,首先要知道一个概念Class。这个Class可不是我们通常所说的class。

我们通常说String, Integer, ArrayList 这些都属于class,或者我们自己定义的类Point,Person都属于class。

这么多的类用一个类型表示就是Class。

比如一个Person类new出来的类型就是人,人有很多属性,比如身高,体重,性别,还有很多动作,比如走,跑,跳,这些是人的方法。

那这个Class类new出来的类型就是class,java的类也有很多属性,比如名称,所在的包,继承的父类,还有里面的成员变量,成员方法,构造函数等等。

 

我们new一个Person  会 Person person = new Person();

那我们获取一个Class要如何获取呢

java提供了三种方式可以获取一个类的Class,我们以String为例

1. Class clz = String.class;

2. String s = new String();
    Class clz = s.getClass();

3. Class clz = Class.forName("java.lang.String"); 用过jdbc的看这种方式眼熟

这三种方式本质上没有区别,只不过前两种在编译时指定了获取Class的类型,而第三种方式在运行时可以通过参数指定Class的类型。

 

需要注意的一点是不光引用类型的变量有Class,基本数据类型也有Class

Class clz = int.class;

我们可以通过clz来判断该类型是不是基本的数据类型

clz.isPrimitive();

clz.getName(); //获取类的名字

clz.getPackage();//获取该类所在的包

 

我们还可以获取类的成员变量,成员方法,构造方法。

                                Person p = new Person();
		Class clz = p.getClass();
		Constructor[] con = clz.getConstructors();//只能访问类中声明为public的构造函数
		//Constructor[] con = clz.getDeclaredConstructors();//能访问类中所有的构造函数
		for (Constructor c : con) {
			System.out.println(c.getName());
		}
		Field[] fis = clz.getFields();//只能访问类中声明为公有的字段,私有的字段它无法访问
		//Field[] fis = clz.getDeclaredFields();//能访问类中所有的字段
		for (Field c : fis) {
			System.out.println(c.getName());
		}
		Method[] mes = clz.getMethods();//只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方法
		//Method[] mes = clz.getMethods();//能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法  
		for (Method m : mes) {
			System.out.println(m.getName());
		}

 

 我们可以看出这些信息都是运行时动态获取的,只要加载了某个类的Class,就可以动态的获取这个类里面的所有属性。

分享到:
评论

相关推荐

    java反射入门

    java反射入门 实现java反射的两种模式

    Java反射基础入门,一篇就够啦

    文章目录Java基础之反射1 前言2 反射的基本概念3 reflection的工作机制4 构造Class对象方式5 Java反射机制操作的基础套路5.1 Java中的类反射5.2 Java反射机制获取类中构造方法的信息5.3 获取类中方法的信息6 Java...

    JAVA反射机制的入门代码

    代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。

    java反射机制基础

    java反射机制基础,是进入java反射机制的一把钥匙

    JAVA基础-反射-枚举

    java基础,反射枚举基础,自己总结的笔记。

    java反射机制知识点

    java反射机制基础学习。Class、Method、Field

    Java反射机制课件ppt

    Java反射机制Java反射机制Java反射机制Java反射机制

    java-reflex-demo:java反射基础

    本工程为Java反射机制 基础知识demo

    java反射机制知识点【精通JAVA必知必会】

    详细地讲解java反射机制 看完基础至少更进一层楼

    java反射机制pdf

    对于Java基础的巅峰——反射机制的详细描述,反射的入门学习帮手!

    新手学习java反射基础

    Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。下面我们来一起学习一下吧

    Java实验2 反射.doc

    本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...

    JAVA基础--JAVA中的反射机制详解

    JAVA基础--JAVA中的反射机制详解:本文档详细的介绍了Java的反射API的应用,希望能对各有所帮助

    2020老杜最新Java零基础进阶视频教程-反射机制课件

    本Java视频教程适合有一定编程语言基础的学员观看,在本Java视频教程中讲解了Java面向对象、异常、数组、常用类、集合、IO流、线程、反射机制。该视频教程基于Java13进行讲解,Java13是目前Java最新版本。视频中讲师...

    java反射机制 读者基础:具备Java 语言基础

    摘要 Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过...读者基础:具备Java 语言基础。 本文适用工具:JDK1.5 关键词: Introspection(内省、内观) Reflection(反射)

    Java基础[08-反射].ppt

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...

    java反射笔记

    java反射学习的一些基础代码,简单使用反射的案例,为eclipse中的工作空间,编码GBK

    Java基础 反射篇.md

    - 反射基础篇文末总结 反射是一个非常重要的知识点,在学习Spring 框架时,Bean的初始化用到了反射,在破坏单例模式时也用到了反射,在获取标注的注解时也会用到反射······ 当然了,反射在日常开发中,我们...

    Java反射机制的缺点_尚硅谷_张晓飞

    Reflection is commonly used by programs which require the ability to examine or modify the runtime behavior of applications running in the Java virtual machine. This is a relatively advanced feature ...

    完整版 Java基础入门教程 Java程序语言设计 02 java语法基础 Java语法基础(共32页).ppt

    完整版 Java基础入门教程 Java程序语言设计 07 网络编程 反射机制(共23页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络编程 网络编程(共32页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络...

Global site tag (gtag.js) - Google Analytics