java反射创建对象调用方法
反射是Java中一种强大的特性,它允许程序在运行时动态地获取类的信息,并对类进行操作。通过反射,我们可以在运行时创建对象、调用方法、修改属性等。
在Java中,要使用反射首先需要获取类的Class对象。可以通过以下几种方式获取Class对象:
1.通过类名获取Class对象:使用Class.forName()方法可以根据类的全限定名获取Class对象。例如:
```java
Class<?> clazz = Class.forName("ample.MyClass");
```
2.通过对象获取Class对象:使用对象的getClass()方法可以获取对象的Class对象。例如:
```java
MyClass obj = new MyClass();
Class<?> clazz = Class();
```
3.通过类字面常量获取Class对象:使用类字面常量可以直接获取Class对象。例如:
```java
Class<?> clazz = MyClass.class;
```
获取了Class对象之后,就可以利用反射进行一系列的操作。
java反射的作用及应用场景#### 1.创建对象
通过反射可以在运行时动态地创建对象。使用Class对象的newInstance()方法可以创建一个类的实例。例如:
```java
Class<?> clazz = Class.forName("ample.MyClass");
MyClass obj = (MyClass) wInstance();
```
以上代码可以创建一个ample.MyClass的实例。
#### 2.获取类的属性
使用反射可以获取类的属性,并进行相应的操作,如设置属性的值、获取属性的值等。使用Class对象的getDeclaredField()方法可以获取指定名称的属性对象,然后可以通过属性对象进行相应的操作。
例如,获取一个类的所有属性并输出它们的名称和类型:
```java
Class<?> clazz = MyClass.class;
Field[] fields = DeclaredFields();
for (Field field : fields) {
System.out.println("属性名称:" + Name());
System.out.println("属性类型:" + Type().getName());
}
```
#### 3.调用类的方法
使用反射可以动态地调用类的方法。首先需要获取到方法对象,然后可以使用Method对象的invoke()方法来调用方法。
例如,调用一个类的无参方法:
```java
Class<?> clazz = MyClass.class;
Object obj = wInstance();
Method method = DeclaredMethod("methodName");
method.invoke(obj);
```
还可以调用带参数的方法,需要在invoke()方法中传入对应的参数,例如:
```java
Class<?> clazz = MyClass.class;
Object obj = wInstance();
Method method = DeclaredMethod("methodName", int.class, String.class);
method.invoke(obj, 10, "hello");
```
以上代码可以调用一个带有两个参数的方法。
#### 4.获取类的构造方法
反射可以获取一个类的构造方法,在创建对象时可以使用指定的构造方法。使用Class对象的getDeclaredConstructors()方法可以获取类的所有构造方法对象。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论