这是一些代码,我希望能让你理解我想要的东西。它当然不起作用。
public static <T> void foo(Class<? extends T> type, AsyncCallback<T> callback){
/*do something */
}
public void MyMethod() {
Class a;
if (isSomething()) {
a = "some class";
} else if (isSomething2()){
a = "some other class";
}
/* probably more of this or even a switch*/
useFoo(a);
}
public void useFoo(Class a){
foo(a.class, AsyncCallback<a> {
/* some callback */
});
}
方法foo已经存在,我需要从MyMethod动态使用它。目前,MyMethod中的每个不同的if语句都有一个useFoo。我想只有一个用一些参数调用的useFoo。原因是回调是一段冗长的代码,需要在每次调用该方法时重复。如何在不改变foo方法的情况下完成此操作?我希望你理解我的问题。谢谢。
答案 0 :(得分:1)
我相信这就是你要找的东西:
public <T> void useFoo(T a) {
foo(a);
// do other stuff
}
答案 1 :(得分:0)
您还可以在静态函数中声明特定的T
类型,如下所示:
ClassName.<ConcreteTType>foo(tObject.class, callbackstuff);
答案 2 :(得分:0)
如果其余代码与上面相同,您可以将useFoo
方法编写为:
public <T> void useFoo(Class<T> a) {
foo(a, new AsyncCallback<T>() {
/* some callback */
});
}