如何在CoreJava中将逗号分隔的字符串转换为T的列表

如何在CoreJava中将逗号分隔的字符串转换为T的列表,java,Java,就像他们在电台脱口秀上说的“第一次很长时间” 我正在尝试将分隔属性解析为列表。这很简单,但由于某种原因,我不知道如何仅使用核心Java以通用方式实现这一点。泛型是指要创建的列表类型可以是List、List或List。下面我的最新尝试给出了非字符串的运行时异常,因为我试图从字符串转换为例如Double,这是不允许的。感谢您的帮助 public static <T> void parsePropsToList(String propName, String delim, List<

就像他们在电台脱口秀上说的“第一次很长时间”

我正在尝试将分隔属性解析为列表。这很简单,但由于某种原因,我不知道如何仅使用核心Java以通用方式实现这一点。泛型是指要创建的列表类型可以是List、List或List。下面我的最新尝试给出了非字符串的运行时异常,因为我试图从字符串转换为例如Double,这是不允许的。感谢您的帮助

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和类名,然后返回一个填充的列表。