gpt4 book ai didi

java 强制转换并调用字符串作为对象的方法

转载 作者:行者123 更新时间:2023-12-02 06:00:43 25 4
gpt4 key购买 nike

我正在使用 AOP 来查找实例变量在设置之前和设置之后的值。因此,我拦截所有 setxxx 方法,并尝试在之前和之后执行 getxxx

//actual instance
Object target = joinPoint.getTarget();
//Type of the instance
Class objectClass = target.getClass();

我想调用一个字符串“getFirstName()”,它实际上是实际实例(目标)上的方法名称。我该怎么做

现在我可以执行以下操作

if (target instanceof User) {
instanceVarCurrentValue = ((User) target).getFirstName();
}

但是我无法检查项目中所有对象的实例,并且对于每个类,我必须检查所有属性

最佳答案

您需要使用反射。您必须在类上找到该方法并调用它。
请看下面的代码:

public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
User user = new User();
String name = runMethod(user, "getFirstName");
System.out.println(name);
}

private static String runMethod(Object instance, String methodName) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
Method method = instance.getClass().getMethod(methodName);
return (String)method.invoke(instance);
}

关于java 强制转换并调用字符串作为对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18357736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com