一、概念
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制
二、用途
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的方法
三、方法
1,获取Class 对象 Class.forName("Reflect.Demo"); new Demo().getClass(); Demo.class
2, newInstance():
创建此 Class 对象所表示的类的一个新实例。
会抛出 throws IllegalAccessException, InstantiationException。
自己定义只定义一个有参数的构造函数之后,会出现错误 'java.lang.InstantiationException: ..'
所以大家以后再编写使用Class实例化其他类的对象的时候,一定要自己定义无参的构造函数
3,构造器 getConstructor(Class<?>... parameterTypes),getConstructors()
getDeclaredConstructor(Class<?>... parameterTypes),
getDeclaredConstructors()
4,属性 getDeclaredField(String name)getDeclaredFields()
getDeclaredMethod(String name, Class<?>... parameterTypes)
getDeclaredMethods()
getField(String name)
getFields()
对私有属性赋值
- Field field = demo.getDeclaredField("sex");
- field.setAccessible(true);
- field.set(obj, "男");
5.方法 getMethod(String name, Class<?>... parameterTypes)
getMethods() getDeclaredMethods()
getDeclaredMethod(String name, Class<?>... parameterTypes)
调用私有方法 setAccessible,然后 invoke(Object obj, Object... args)
6,注解 getAnnotation(Class<A> annotationClass) getAnnotations()
isAnnotation()
isAnnotationPresent(Class<? extends Annotation> annotationClass)
7,其他
cast(Object obj)
将一个对象强制转换成此 Class 对象所表示的类或接口。
getClassLoader()
返回该类的类加载器。
getComponentType()
返回表示数组组件类型的 Class
。
getEnumConstants()
如果此 Class 对象不表示枚举类型,则返回枚举类的元素或 null。
getModifiers()
返回此类或接口以整数编码的 Java 语言修饰符。
getPackage()
获取此类的包。
URL getResource(String name)
查找带有给定名称的资源。
InputStream getResourceAsStream(String name)
查找具有给定名称的资源。
isInterface()
判定指定的 Class
对象是否表示一个接口类型。
isInstance(Object obj)
判定指定的 Object
是否与此 Class
所表示的对象赋值兼容。
getSuperclass()
返回表示此 Class
所表示的实体(类、接口、基本类型或 void)的超类的 Class
8、通过反射修改数组大小
- public static Object arrayInc(Object obj,int len){
- Class<?>arr=obj.getClass().getComponentType();
- Object newArr=Array.newInstance(arr, len);
- int co=Array.getLength(obj);
- System.arraycopy(obj, 0, newArr, 0, co);
- return newArr;
- }
相关推荐
java基础之反射讲解
java基础,反射枚举基础,自己总结的笔记。
今天小编就为大家分享一篇关于实例讲解Java基础之反射,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
JAVA基础--JAVA中的反射机制详解:本文档详细的介绍了Java的反射API的应用,希望能对各有所帮助
主要介绍了 java基础之反射和泛型以及注解的相关资料,需要的朋友可以参考下
主要介绍了Java基础之反射原理与用法,结合实例形式详细分析了java反射的相关概念、原理、使用方法与操作注意事项,需要的朋友可以参考下
java基础之一反射笔记
java基础之注解和反射
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...
尚硅谷_佟刚_Java基础_反射.pdf 反射技术方面的资料
文章目录Java基础之反射1 前言2 反射的基本概念3 reflection的工作机制4 构造Class对象方式5 Java反射机制操作的基础套路5.1 Java中的类反射5.2 Java反射机制获取类中构造方法的信息5.3 获取类中方法的信息6 Java...
Java基础 反射篇 反射的思想及作用 反射的基本使用 获取类的 Class 对象 构造类的实例化对象 获取一个类的所有信息 获取类中的变量(Field) 获取类中的方法(Method) 获取类的构造器(Constructor) 获取注解 通过...
结合java最基本的多线程,反射,泛型 对java基础的学习非常有帮助
Java基础 反射篇 - Java基础 反射篇 - 反射的思想及作用 - 反射的基本使用 - 获取类的 Class 对象 - 构造类的实例化对象 - 获取一个类的所有信息 - 获取类中的变量(Field) - 获取类中的方法(Method) - ...
大学课程讲义_Java基础_反射.pptx
本Java视频教程适合有一定编程语言基础的学员观看,在本Java视频教程中讲解了Java面向对象、异常、数组、常用类、集合、IO流、线程、反射机制。该视频教程基于Java13进行讲解,Java13是目前Java最新版本。视频中讲师...
JAVA基础JAVA中的反射机制详解.pdf
Java基础之—反射(非常重要)。 一篇文章带你快速了解!
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...