我刚看到有人发了下面的帖子,对丑陋的代码大发雷霆:
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/