有两个类,一个名为Service,另一个名为Domain。
class Domain<T> {
String id;
// some other common fields and methods
T data;
T getData() {
return data;
}
class Service<T> {
T get(String id) {
// here's we need a Class<Domain<T>> to do some work
TypeToken<Domain<T>> typeToken = new TypeToken<Domain<T>>(getClass()){};
// how to get `Class<Domain<T>>` from `typeToken`
Class<Domain<T>> = ...
}
}
那么,如何从Class<Domain<T>>
获取TypeToken<Domain<T>>
?
答案 0 :(得分:0)
对于记录,询问“如何从MongoTemplate.findOne()
检索泛型类型?”可能会给你一个much better answer。
MongoTemplate
API不接受TypeToken
或任何其他通用捕获机制。这意味着它不能安全地支持返回泛型类型。假设你在编译时知道类型应该是什么,你可以做一个不安全的演员,但是:
Domain<T> domain = (Domain<T>) template.findOne(query, Domain.class);
请注意,这会传入Domain.class
,因此findOne()
将返回原始Domain
实例,然后需要将其转换为Domain<T>
以避免使用原始类型