java - 将 T 作为参数传递给以在 Java 中有条件地创建泛型

标签 java generics arraylist

我正在尝试在 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/

相关文章:

java - 不兼容的类型 List 和 ArrayList 的 ArrayList

java - restart 和 IndexOutOfBoundsException 奇怪的原因,我以后如何避免这种情况?

java - JSP 和 Spring 验证

java - 使用带有 JOGL 的 maven assembly 插件创建可执行 jar

java - 逻辑错误; Java 姓名搜索编程挑战赛

java - 具体类作为通用参数

c# - C# 中的通用集合算法

java - 关于java中可克隆接口(interface)和object.clone()的混淆

java - 小对象池是否比 Android 的 Java 垃圾收集器更有效?

java - Java 8 中异常类型推断的一个独特功能