昨晚学了reflection,感觉很XXX,这是基础,已前自己却从未了解过,内牛满面啊
1 用反射必须用CLass类
每一个对象都会对应一个唯一的class ,有三种方式可以得到某一个对象的Class,已String对象为例。
1>、 Class<?> cl1= java.lang.String.class;
2>、 CLass<?> cl2= java.lang.String.getClass();
3>、 CLass<?> cl3= Class.forName("java.lang.String");
其中,AA.class 和AA.getCLass();是不一样的,如果AA是最终的对象,则一样,如果AA比如是Object ,而AA其实是User类
那么AA.class就是得到object的Class,而AA.getClass得到的是User的实例。
2 通过Class可以构造出某一个类的实例对象,前提是该class所对应的对象必须有public的构造方法,最好是无参的。
1> String str=c(1,2,3).newInstance(); // 调用的是public的 无参的 等价于 String s=new String();
2> String str=c(1,2,3).getConstruction(new Class[]{String.class}).new Instance(new Object[]{"hello"});
// 有参的构造方法, 等价于 String s=new String("hello");
3 得到某一个对象的某一个方法或全部方法
注意:每一个对象的每一个方法都对应一个Method对象
Methods ms=c(1,2,3).getDeclaredMethods(); //得到某一个类所有方法的数组
Method method = c(1,2,3).getMethod("substring",new Class[]{int.class,int.class});
//得到某一个方法 需要传递方法名,第二个参数为该方法的输入参数数 组列
4 得到某一个对象的属性,也称公共成员变量
注意:每一个对象的每一个属性都对应一个Field对象
Field[] fields=c(1,2,3).getDeclaredFields(); // 得到某一个类所有的属性
Field f = c(1,2,3).getField(“aa”); //得到某一个类的已aa命名的属性
5 方法的调用,这个是重点。
调用String的substring方法
Object obj =method.invoke(str,new Object[]{1,5}); //等价于 Object obj=(Object)str.substring(1,5);
6 Class类中getMethods()与getDeclaredMethods()的区别
getMethods()得到public属性的方法
getDeclaredMethods()得到的是所有的privete、public等全部的方法
注 getFields和getDeclaredFields方法的区别和上面的一样
今天暂且到这里。
分享到:
相关推荐
本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...
java注解和反射的个人学习笔记
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...
这份"Java入门学习笔记"涵盖了imooc网站上Java入门课程的三个赛季的内容,旨在为初学者提供一个全面的学习资源。 笔记的第一部分是"Java入门第一季学习笔记",它可能包括Java的基础概念和语法。这部分可能会讲解...
Java学习笔记作为程序员学习和掌握Java技术的重要资料,对于初学者来说是一个宝贵的参考。 在Java学习笔记中,通常会包括以下几个方面的内容。首先,基础语法是学习的起点,它涵盖了变量、数据类型、运算符、控制...
java学习笔记java反射机制
### Java李兴华学习笔记之Java常用类库 #### 一、课程介绍及知识点概览 根据提供的资料,“Java李兴华学习笔记之Java常用类库”这份文档来源于北京MLDN软件实训中心的教学资料,主要涵盖了Java编程语言中常用类库...
本篇笔记将深入探讨Java反射的概念、重要性以及如何使用。 一、反射基础 1. 类加载:当Java虚拟机(JVM)加载一个类时,它会创建该类的Class对象。这个对象包含了关于类的所有信息,包括方法、字段、构造器等。...
本笔记主要涵盖了四个核心知识点:Java反射机制、流(I/O流)、内存管理和Java学习的基础。以下是对这些主题的详细阐述: 一、Java反射机制 Java反射机制是Java语言的一个强大特性,允许程序在运行时检查类、接口、...
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在“java反射笔记”这个主题中,我们将深入探讨反射的基础知识和常见用法。 首先,我们需要了解...
《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...
【Java学习笔记(源码)】是一份详细记录了Java编程语言学习过程的资源集合,包含实际的源代码示例。这份笔记旨在帮助初学者和有一定经验的开发者深入理解和掌握Java语言的核心概念、语法以及常见应用。以下是笔记中...
Java反射机制是Java编程语言的一项重要特性,它允许程序在运行时动态地获取类的信息,并且能够对类的属性和方法进行操作。反射机制的核心在于Java的`java.lang.reflect`包,其中包含了`Class`、`Constructor`、`...
1. **反射**:Java反射机制允许在运行时检查类的信息(如类名、方法、字段等),并能动态调用方法和修改字段值,增强了代码的灵活性。 2. **泛型**:泛型提供了一种在编译时检查类型安全的方法,允许在类、接口和...
"Java超强学习笔记"显然是一份全面且深入的Java学习资料,由一位极具洞察力和组织能力的作者精心编纂。这份笔记可能包含了从基础知识到高级特性的全方位讲解,旨在帮助学习者构建坚实的Java编程基础,并提升他们的...
这份"java校招学习笔记"应该是一个全面的参考资料,帮助求职者巩固Java知识,提高解决问题的能力,以应对面试中的各种挑战。同时,实践项目经验和解决实际问题的能力也是校招面试中不可或缺的部分,因此理论学习的...
基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....
这份“Java学习笔记(必看经典).doc”文档将涵盖Java的核心概念和重要知识点,对于初学者和有经验的开发者来说都是宝贵的参考资料。 首先,Java的基础部分通常包括以下几个方面: 1. **Java语法基础**:这是所有...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。这份《Java学习笔记》包含了丰富的知识内容,旨在帮助学习...总之,《Java学习笔记》是一份全面而实用的学习资源,适合Java初学者和进阶者。