我有一个方法接受一个字符串,并尝试使用Class.forName()
将其强制转换为类。我想在调用此方法之前检查,如果字符串表示基本类型。除了运行8个String.equals
电话之外,还有什么方法可以做到这一点吗?码:
public String myMethod(String returnType) {
if(checkPrimitive(returnType))
return returnType;
String typeArgs = Arrays.stream(Class.forName(returnType).getTypeParameters())
.map(typeVar -> typeVar.getBounds()[0].getTypeName())
.collect(Collectors.joining(","));
// ...
}
你可以使用apache-commons的ClassUtils.getClass(returnType);
。这也考虑了原语,你会给你一个类对象。然后你可以打电话给isPrimitive()
。
您可以使用Guava方法allPrimitiveTypes
获取基本类型的所有类对象的列表,然后检查其名称:
Set<String> names = Primitives.allPrimitiveTypes().stream().map(Class::getName).collect(toSet());
if (names.contains(returnType)) {
...
}