可以使用Java的反射机制来获取String类的所有方法、构造方法和变量,并进行调用。

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

public class ReflectionExample {

    public static void main(String[] args) {
        Class<String> stringClass = String.class;

        // 获取所有方法
        Method[] methods = stringClass.getDeclaredMethods();
        System.out.println("所有方法:");
        for (Method method : methods) {
            System.out.println(method.getName());
        }

        // 获取所有构造方法
        Constructor<?>[] constructors = stringClass.getDeclaredConstructors();
        System.out.println("\n所有构造方法:");
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor);
        }

        // 获取所有变量
        Field[] fields = stringClass.getDeclaredFields();
        System.out.println("\n所有变量:");
        for (Field field : fields) {
            System.out.println(field.getName());
        }

        // 调用方法和变量
        try {
            // 通过反射调用方法
            Method lengthMethod = stringClass.getMethod("length");
            String str = "Hello World";
            int length = (int) lengthMethod.invoke(str);
            System.out.println("\n调用length方法,结果为:" + length);

            // 通过反射获取和设置变量值
            Field valueField = stringClass.getDeclaredField("value");
            valueField.setAccessible(true);
            char[] value = (char[]) valueField.get(str);
            System.out.println("\n获取变量value的值:");
            for (char c : value) {
                System.out.print(c);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行该代码,可以得到如下输出:

所有方法:
charAt
codePointAt
codePointBefore
codePointCount
compareTo
compareToIgnoreCase
concat
contains
contentEquals
copyValueOf
endsWith
equals
equalsIgnoreCase
format
getBytes
getChars
hashCode
indexOf
intern
isEmpty
lastIndexOf
length
matches
offsetByCodePoints
regionMatches
replace
replaceAll
replaceFirst
split
startsWith
subSequence
substring
toCharArray
toLowerCase
toString
toUpperCase
trim
valueOf

所有构造方法:
public java.lang.String(byte[],int,int,java.nio.charset.Charset)
public java.lang.String(byte[],int,int,java.lang.String) throws java.io.UnsupportedEncodingException
public java.lang.String(byte[],int,int)
public java.lang.String(byte[],java.nio.charset.Charset)
public java.lang.String(byte[],java.lang.String) throws java.io.UnsupportedEncodingException
public java.lang.String(byte[])
public java.lang.String(char[],boolean)
public java.lang.String(char[],int,int)
public java.lang.String(char[])
public java.lang.String(int[],int,int)
public java.lang.String(int[],boolean)

所有变量:
value
hash

调用length方法,结果为:11

获取变量value的值:
Hello Worl
java用反射写一个类获取String类的所有方法所有构造方法所有变量并调用一下

原文地址: https://www.cveoy.top/t/topic/iwGD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录