我正在尝试在 Java 中有条件地创建一个通用实例,其中类型作为参数传递。是这样的:
private void doStuff(somethingThatDescribesWhatTShouldBeHere) {
ArrayList<thetypeTthatwaspassedin> = new ArrayList<thetypeTthatwaspassedin>
... rest of logic
}
如果没有 ArrayList<T>
,我一辈子都想不出 T 参数应该是什么样子。向我尖叫。
想法是如果T
是一个字符串,然后是一个 ArrayList<String>
被实例化.. 如果它是 Foo 那么一个 ArrayList<Foo>
在内部实例化。
请帮忙
最佳答案
好吧,就让doStuff
通用的:
// If you can, pass a parameter of type T :
private <T> void doStuff(T something) {
ArrayList<T> = new ArrayList<T>();
... rest of logic
}
// so it can be called like that :
YourType param = ...;
foo.doStuff(param);
// If you can't pass a parameter of type T, you'll have
// to explicitly tell the compiler which type to use :
foo.<YourType>doStuff();
传递 Class<T>
正如 Stijn Geukens 所暗示的那样,如果您不需要传递实际对象,这也是一种避免使用丑陋语法的常用方法。
关于java - 将 T 作为参数传递给以在 Java 中有条件地创建泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119470/