【发布时间】:2020-11-10 10:50:29
【问题描述】:
我有一个方法methodA(),它将Class<T> inClass 类的实例作为参数。
在methodA() 中传递的任何给定inClass 实例都将具有一个名为user:String 的属性。
所以我想在methodA() 中读取该属性。但我得到Cannot resolve method 'getUser' in 'T'
是否有可能以某种方式从泛型类中读取属性?
或者,我可以在methodA() 中将我想要的类的名称作为字符串传递并以某种方式将其转换为“ClassName”.class 吗?
private <T> Function<PredicateSpec, Route.AsyncBuilder> walletRoute(String server, String path, String method, Class<T> inClass) {
return r -> r.path(path)
.and().method(method)
.and().readBody(inClass, requestBody ->
walletDiscoveryService(requestBody.getUser()).equals(server))
.uri("http://" + server);
}
我调用如下方法:
walletRoute("localhost:3000", "/api/account/**", "POST", BankAccount.class)
【问题讨论】:
-
你应该发布你的代码。
-
Class
怎么样,其中的类 U 是抽象的并且声明了 getUser? -
不行,除非你给
T的具体实例也通过了。Class<T>类型的对象本身并不引用T的任何特定实例。 -
@Fureeish,你能告诉我怎么做吗?当我调用该方法时,我确实将 Account.class 或 BankAccount.class 作为参数传递,它们都具有我想要读取的属性
-
您确定要通过 Class
而不是 T 吗?
标签: java oop kotlin generics java-8