我刚看到有人在丑陋的代码上发布了以下内容:
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是否有办法在更美观的方式。
我正在使用的另一个解决方案是使用注释处理器为我解决这个问题,但是我觉得它错过了一定程度的简单性。
答案 0 :(得分:7)
怎么样
public static <T extends ArrayList<ArrayList<String>>> Tuple<T,T>
split(T data);
但我同意@esej你可能想要一些类来封装list-of-lists-of-strings数据结构。
我也不确定你是否应该ArrayList
进行硬编码(而不是使用接口List
)。
答案 1 :(得分:0)
您可以执行以下操作:
public static <T extends List<List<List<String>>>> Tuple<T, T> split(T data) {
}
不要让它看起来更好IMO。