4

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

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),它 extends ArrayList<ArrayList<ArrayList<String>>>,这将使代码看起来像这样:

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

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

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

4

2 回答 2

7

怎么样

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

但我同意@esej 的观点,即您可能需要某个类来封装 list-of-lists-of-lists-of-strings 数据结构。

我也不确定您是否应该ArrayList在那里进行硬编码(而不是使用 interface List)。

于 2012-06-28T23:12:27.150 回答
0

您可以执行以下操作:

public static <T extends List<List<List<String>>>>  Tuple<T, T> split(T data) {

}

不会使它看起来更好IMO。

于 2012-06-28T23:19:47.190 回答