一、概念
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 反射机制详解 JAVA 反射机制是 Java 语言中的一种动态获取信息和动态调用对象方法的功能。它允许程序在运行时获取类的信息、构造对象、获取成员变量和方法、调用对象的方法等。 Java 反射机制主要提供了以下...
java基础之一反射笔记
java基础之注解和反射
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...
本文将深入探讨Java中的基础概念,包括多线程、反射以及泛型,这些都是Java编程中至关重要的知识点。 首先,我们来讨论Java多线程。多线程允许程序同时执行多个独立的任务,极大地提高了应用程序的效率和响应性。在...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。通过反射,我们可以创建动态的对象,调用未知的方法,甚至访问私有成员...理解并恰当使用反射是Java程序员必备的技能之一。
Java中的反射机制、泛型和注解是三个重要的概念,它们在编程中有着广泛的应用。 首先,反射(Reflection)是Java提供的一种强大的元数据访问机制,允许程序在运行时检查和操作类、接口、字段和方法的信息。在上述...
Java中的反射(Reflect)是Java语言的一个重要特性,它允许运行时访问类、接口、字段和方法的信息...学习和理解反射原理,可以帮助我们更好地理解和调试Java程序,同时也能为我们在特定场景下利用反射解决问题打下基础。
#### Java反射基础 Java反射主要依赖于以下几类API: - `java.lang.Class`: 提供了获取类信息的方法。 - `java.lang.reflect.Field`: 允许访问和修改类的字段。 - `java.lang.reflect.Method`: 用于调用类的方法。 ...
1. 反射基础: Java反射机制主要基于`java.lang.Class`类和`java.lang.reflect`包中的接口和类。`Class`对象代表了运行时的类信息,通过`Class.forName()`方法可以获取到类的`Class`对象。此外,`java.lang.reflect...
Java基础-反射机制详解 本文将详细介绍Java基础中的反射机制,包括Class类、ClassLoader类、Constructor、Method、Field类的用法,以及动态代理机制。 Class类 Class类是Java中一个特殊的类,用于描述类本身的...
总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...
Java基础入门系列是帮助初学者掌握Java编程的重要学习材料,本篇主要介绍了泛型、反射和注解这三大高级特性。 泛型是Java SE 5版本引入的一个新特性,它的主要目的是允许在使用类、接口和方法时能够引用到任何类型...
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...
【Java反射机制详解】 在Java编程中,反射机制是一个强大的工具,它允许程序在运行时检查自身,并且能够动态地操作类和对象的内部信息。这个特性使得Java代码具有高度的灵活性,能够在不修改源码的情况下,根据需要...
首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`方法或者对象的`getClass()`方法来获取`Class`对象。一旦我们有了`Class`对象,就可以进一步...