gpt4 book ai didi

java - 从 Class<*> 获取对象实例(反射)

转载 作者:行者123 更新时间:2023-11-30 06:21:24 27 4
gpt4 key购买 nike

一些背景 - 我正在尝试编写一种通用方法来覆盖来自服务器的值,但不确切知道应该在哪个类上设置它们。所以我正在做的是:

我查看从服务器获得的键/值,然后开始查看(迭代)“User”对象及其所有字段 - 如果其中一个字段与我从服务器获得的字段匹配 - 我需要覆盖它的值。

其中一个用户字段本身可以是另一个类,例如“设置”,然后我需要在设置类上重复迭代,依此类推 - 直到找到匹配项。

找到匹配项后,我需要设置该值。这就是我的问题所在:

尝试在类类型中设置方法,但抛出 IllegalArgumentException

target.declaredMethods[1].invoke(target, true)

java.lang.IllegalArgumentException: Expected receiver of type test.reflectiveparser.User$Settings, but got java.lang.Class<test.reflectiveparser.User$Settings>

我意识到我需要调用实例上的方法而不是类类型 - 但是如果我直到运行时才知道我正在处理哪个类,我该怎么做?

(尝试构建一种在不同类中设置值的通用方法)

最佳答案

类型是类,您必须创建该类的实例检查this

Object instance  = type.forName(className).getConstructor().newInstance();

target.declaredMethods[1].invoke(instance,true);

关于java - 从 Class<*> 获取对象实例(反射),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48092794/

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