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);