如何在CoreJava中将逗号分隔的字符串转换为T的列表
就像他们在电台脱口秀上说的“第一次很长时间” 我正在尝试将分隔属性解析为列表。这很简单,但由于某种原因,我不知道如何仅使用核心Java以通用方式实现这一点。泛型是指要创建的列表类型可以是List如何在CoreJava中将逗号分隔的字符串转换为T的列表,java,Java,就像他们在电台脱口秀上说的“第一次很长时间” 我正在尝试将分隔属性解析为列表。这很简单,但由于某种原因,我不知道如何仅使用核心Java以通用方式实现这一点。泛型是指要创建的列表类型可以是List、List或List。下面我的最新尝试给出了非字符串的运行时异常,因为我试图从字符串转换为例如Double,这是不允许的。感谢您的帮助 public static <T> void parsePropsToList(String propName, String delim, List<
public static <T> void parsePropsToList(String propName, String delim, List<T> listToFill){
//This is paired down for convenience - assume getSplitList correctly parses to List<String>
List<String> stringList = PropsManager.getSplitList(propName, delim);
for(String s : stringList){
listToFill.add((T)s);
}
}
公共静态void parsePropsToList(字符串propName、字符串delim、列表listToFill){
//为了方便起见,这是成对的-假设getSplitList正确解析为List
List-stringList=PropsManager.getSplitList(propName,delim);
用于(字符串s:stringList){
添加((T)s);
}
}
您需要在函数中传递类,例如
public static <T> void parsePropsToList(
String propName,
String delim,
List<T> listToFill,
Class<T> clazz)
publicstaticvoidparsepropstolist(
字符串propName,
弦德利姆,
列表列表:,
课程名称(clazz)
然后使用clazz的函数,获得一个字符串作为其参数,用delim拆分propName,并使用前面的构造函数为每个子字符串调用一个新的T实例。将此新实例放入listToFill,然后返回此列表。由于Java在运行时抛出泛型类型信息,因此需要向方法中传递一些内容,以便将属性字符串转换为正确的类型 我认为最简单的方法是在方法中添加一个解析器参数:
public interface Parser<T> {
public T parse(String value);
}
static <T> void parsePropsToList(String propName, String delim, List<T> listToFill, Parser<T> parser) {
String value;
//extract value from property
listToFill.add(parser.parse(value));
}
公共接口解析器{
公共T解析(字符串值);
}
静态void parsePropsToList(字符串propName、字符串delim、列表listToFill、解析器){
字符串值;
//从属性中提取值
添加(parser.parse(value));
}
您必须使用Double.valueOf(string)从字符串中获取Double。非常感谢,Sbodd,Pierre,这真的让我很困扰。我使用Pierre的解决方案b/c我认为我的方法已经有太多的参数,所以现在我可以在我的方法中构造列表,我所要做的就是传入propName、delim和类名,然后返回一个填充的列表。