在java中重用类型参数的值

DZi*_*eyn 4 java generics annotations

我刚刚看到有人在丑陋的代码上发布了以下内容:

public static 
    Tuple<ArrayList<ArrayList<ArrayList<String>>>, 
          ArrayList<ArrayList<ArrayList<String>>>>     
    split(
          ArrayList<ArrayList<ArrayList<String>>> data, [..]);
Run Code Online (Sandbox Code Playgroud)

(由我设计,在一个可笑的尝试,以获得这半可读)

我一直在寻找一种方法使这个看起来像这个(非功能)代码:

TypeParam T = ArrayList<ArrayList<ArrayList<String>>>;
public static Tuple<T,T> split( T data, [..]);
Run Code Online (Sandbox Code Playgroud)

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

public static Tuple<Data, Data> split( Data data, [..]);
Run Code Online (Sandbox Code Playgroud)

虽然这种方法非常令人满意,但我不想放弃使用遗漏的某些方法的可能性,我想知道Java是否有一种更美观的方式来实现这一点.赏心悦目的.

我正在使用的另一个解决方案是使用注释处理器为我解决这个问题,但是我觉得它错过了一定程度的简单性.

Thi*_*ilo 7

怎么样

 public static <T extends ArrayList<ArrayList<String>>> Tuple<T,T> 
      split(T data);
Run Code Online (Sandbox Code Playgroud)

但我同意@esej你可能想要一些类来封装列表列表的列表数据结构.

我也不确定你是否应该ArrayList在那里进行硬编码(而不是使用界面List).