java generic String to parser

是否有直接的方法来实现具有以下签名的方法? 至少,实现需要处理原始类型(例如Double和Integer)。 非原始类型将是一个很好的奖金。

//Attempt to instantiate an object of type T from the given input string //Return a default value if parsing fails static  T fromString(String input, T defaultValue) 

对于实现FromString接口(或等效接口)的对象,实现将是微不足道的,但我还没有找到任何这样的东西。 我还没有找到使用reflection的function实现。

只有将Class作为另一个参数提供时才有可能。 T本身不包含有关所需返回类型的任何信息。

 static  T fromString(String input, Class type, T defaultValue) 

然后你可以按type 。 在这篇博客文章中可以找到一个具体的例子。

您需要一个以特定方式解析特定类型的对象。 显然,不可能只确定如何从类型中解析任意类型。 此外,您可能希望控制解析的完成方式。 例如,数字中的逗号是否正常。 是否应修剪空白?

 interface Parser { T fromString(String str, T dftl); } 

在Java SE 8中,单个抽象方法类型应该不那么冗长。

也许没有回答如何实现解决方案的问题,但是有一个库可以做到这一点(即具有与请求几乎相同的API)。 它被称为类型解析器 ,可以使用这样的东西:

 TypeParser parser = TypeParser.newBuilder().build(); Integer i = parser.parse("1", Integer.class); int i2 = parser.parse("42", int.class); File f = parser.parse("/some/path", File.class); Set setOfInts = parser.parse("1,2,3,4", new GenericType>() {}); List listOfBooleans = parser.parse("true, false", new GenericType>() {}); float[] arrayOfFloat = parser.parse("1.3, .4, 3.56", float[].class);