java - 在java中重用类型参数的值

标签 java generics annotations

我刚看到有人发了下面的帖子,对丑陋的代码大发雷霆:

public static 
    Tuple<ArrayList<ArrayList<ArrayList<String>>>, 
          ArrayList<ArrayList<ArrayList<String>>>>     
    split(
          ArrayList<ArrayList<ArrayList<String>>> data, [..]);

(我的布局,为了让这个半可读的可笑尝试)

我一直在寻找一种方法使它看起来有点像这样(非功能性)代码:

TypeParam T = ArrayList<ArrayList<ArrayList<String>>>;
public static Tuple<T,T> split( T data, [..]);

到目前为止,我找到的最佳解决方案是定义一个类(在这个例子中是一个类 Data ),它扩展了 ArrayList<ArrayList<ArrayList<String>>> ,这将使代码看起来像这样:

public static Tuple<Data, Data> split( Data data, [..]);

虽然这个方法非常令人满意,但我不想放弃我缺少的一些使用泛型的方法的可能性,我想知道 Java 是否有一种方法可以做到这一点甚至更美观的方式。

我正在尝试的另一个解决方案是使用注释处理器来为我解决这个问题,但我觉得这在一定程度上简化了操作。

最佳答案

怎么样

 public static <T extends ArrayList<ArrayList<String>>> Tuple<T,T> 
      split(T data);

但我同意@esej 的观点,您可能需要一些类来封装字符串列表列表数据结构。

我也不确定您是否应该在其中硬编码ArrayList(而不是使用接口(interface)List)。

关于java - 在java中重用类型参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11254103/

相关文章:

c# - sqlite-net的通用方法

java - 从带有注解的 Spring 2.5 中的 AOP 建议访问 HttpServletRequest

java - 理解 Spring 4 注释 bean

java - 是否有 Oracle Coherence Java stub ?

swift 泛型返回第一个和最后一个元素

java - 如何不使用eclipse编译并运行jsp文件

java - 是否有可能 - 模板化此方法?

gradle - 卡普特 : How to process test sources?

java - 具有多个待办事项的服务器套接字如何工作?

java - 需要帮助将 Java 代码更改为方法 addText (String text)