在java中重用类型参数的值
我刚刚看到有人在一篇关于丑陋代码的咆哮中发布了以下内容:在java中重用类型参数的值,java,generics,annotations,Java,Generics,Annotations,我刚刚看到有人在一篇关于丑陋代码的咆哮中发布了以下内容: public static Tuple<ArrayList<ArrayList<ArrayList<String>>>, ArrayList<ArrayList<ArrayList<String>>>> split( ArrayList<ArrayList<ArrayList
public static
Tuple<ArrayList<ArrayList<ArrayList<String>>>,
ArrayList<ArrayList<ArrayList<String>>>>
split(
ArrayList<ArrayList<ArrayList<String>>> data, [..]);
虽然这种方法非常令人满意,但我不想放弃我所缺少的使用泛型的方法,我想知道Java是否有一种更美观的方法来实现这一点
我正在使用的另一个解决方案是使用注释处理器来为我解决这个问题,但是我觉得这忽略了一定程度的简单性。怎么样
public static <T extends ArrayList<ArrayList<String>>> Tuple<T,T>
split(T data);
公共静态元组
分割(T数据);
但是我同意@esej的观点,您可能需要一些类来封装字符串列表列表数据结构
我也不确定您是否应该在其中硬编码
ArrayList
(与使用界面List
)。您可以执行以下操作:
public static <T extends List<List<List<String>>>> Tuple<T, T> split(T data) {
}
公共静态元组拆分(T数据){
}
在我看来,这并不能让它看起来更好。你确定你没有试图用java编写太lispy的代码吗?如果需要一个字符串列表,我想不出一个字符串列表列表在任何OO语言中都不应该拥有自己的类。(对不起,不知道泛型)是的,我同意。这更像是一个让我疑惑的假设情况。哦,哇。。我怎么会错过这个?!我同意这种情况很少见,这更多的是一个假设性的问题。
public static <T extends ArrayList<ArrayList<String>>> Tuple<T,T>
split(T data);
public static <T extends List<List<List<String>>>> Tuple<T, T> split(T data) {
}