英文:
How to get Generic function of TypeToken?
问题
以下是翻译好的部分:
我有以下代码。我想获得一个通用解决方案,仅通过类引用来获取 TypeToken
。
Type application = new TypeToken<List<Application>>() {
}.getType();
Type bill = new TypeToken<List<Bill>>() {
}.getType();
Type payment = new TypeToken<List<Payment>>() {
}.getType();
我尝试从一个只传递类引用的函数中获取 typeToken。我已经尝试过的方法如下:
private static <T> Type getType(Class<T> classType) {
return new TypeToken<List<? extends T>>() {
}.getType();
}
但是当我将方法调用为 getType(Application.class)
时,这并没有返回我预期的 Application 类型的 List TypeToken,似乎在使用 Type 方面出了一些问题。请帮我修复它。提前谢谢。
英文:
I have the following codes. I want to get a generic solution to get the TypeToken
only passing the class reference.
Type application = new TypeToken<List<Application>>() {
}.getType();
Type bill = new TypeToken<List<Bill>>() {
}.getType();
Type payment = new TypeToken<List<Payment>>() {
}.getType();
I have tried to get the typeToken from an function only passing the class reference. What I have tried already.
private static <T> Type getType(Class<T>classType) {
return new TypeToken<List<? extends T>>() {
}.getType();
}
but when I call the method as getType(Application.class)
this doesn't return me the List of Application TypeToken and something went wrong to use the Type. Please help me to fix it. Thanks in advance.
答案1
得分: 1
如果我理解您的需求正确,这应该可以实现:
static <E> TypeToken<List<E>> listToken(Class<E> elementClass) {
return new TypeToken<List<E>>() {}
.where(new TypeParameter<E>() {}, elementClass);
}
更多信息请参阅ReflectionExplained。
英文:
If I understand what you're looking for, this should do it:
static <E> TypeToken<List<E>> listToken(Class<E> elementClass) {
return new TypeToken<List<E>>() {}
.where(new TypeParameter<E>() {}, elementClass);
}
See ReflectionExplained for more info.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论