[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/enjoytoshare/JavaGuide/main/docs/java/basis/reflection.md [Back]  [Original]

---
title:  
category: Java
tag:
  - Java
---

## 







## 



 Spring/Spring BootMyBatis 

****

 JDK  `Method` 

```java
public class DebugInvocationHandler implements InvocationHandler {
    /**
     * 
     */
    private final Object target;

    public DebugInvocationHandler(Object target) {
        this.target = target;
    }


    public Object invoke(Object proxy, Method method, Object[] args) throws InvocationTargetException, IllegalAccessException {
        System.out.println("before method " + method.getName());
        Object result = method.invoke(target, args);
        System.out.println("after method " + method.getName());
        return result;
    }
}

```

 Java  **** 

 Spring  `@Component` Spring Bean  `@Value`

///

## 

****  

**** [Java Reflection: Why is it so slow?](https://stackoverflow.com/questions/1392351/java-reflection-why-is-it-so-slow)

## 

###  Class 

 Class Class Java  Class :

**1. **

```java
Class alunbarClass = TargetObject.class;
```

 Class  Class 

**2.  `Class.forName()`**

```java
Class alunbarClass1 = Class.forName("cn.javaguide.TargetObject");
```

**3. `instance.getClass()`**

```java
TargetObject o = new TargetObject();
Class alunbarClass2 = o.getClass();
```

**4. `xxxClassLoader.loadClass()`:**

```java
Class clazz = ClassLoader.loadClass("cn.javaguide.TargetObject");
```

 Class 

### 

1.  `TargetObject`

```java
package cn.javaguide;

public class TargetObject {
    private String value;

    public TargetObject() {
        value = "JavaGuide";
    }

    public void publicMethod(String s) {
        System.out.println("I love " + s);
    }

    private void privateMethod() {
        System.out.println("value is " + value);
    }
}
```

2. 

```java
package cn.javaguide;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Main {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchFieldException {
        /**
         *  TargetObject  Class  TargetObject 
         */
        Class tagetClass = Class.forName("cn.javaguide.TargetObject");
        TargetObject targetObject = (TargetObject) tagetClass.newInstance();
        /**
         *  TargetObject 
         */
        Method[] methods = targetClass.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println(method.getName());
        }

        /**
         * 
         */
        Method publicMethod = targetClass.getDeclaredMethod("publicMethod",
                String.class);

        publicMethod.invoke(targetObject, "JavaGuide");

        /**
         * 
         */
        Field field = targetClass.getDeclaredField("value");
        //
        field.setAccessible(true);
        field.set(targetObject, "JavaGuide");

        /**
         *  private 
         */
        Method privateMethod = targetClass.getDeclaredMethod("privateMethod");
        //private
        privateMethod.setAccessible(true);
        privateMethod.invoke(targetObject);
    }
}

```



```
publicMethod
privateMethod
I love JavaGuide
value is JavaGuide
```

**** :  `ClassNotFoundException` , `TargetObject`  

```java
Class targetClass = Class.forName("cn.javaguide.TargetObject");
```


Web Proxy Viewer  |  New URL  |  Original Page