将对象转换为字符串并检查是否有效

5
我正在使用以下代码,其中fieldValue可以有简单属性,有没有办法在执行此代码之前检查fieldValue是否不包含无法转换为字符串的对象?以避免崩溃。
keyVal.put(fieldName, (String) fieldValue);

在Java中是否有任何类无法转换为字符串? - Jakub Matczak
3个回答

10
if (fieldValue instanceof String)

我无法使用 ti,因为该字段的值是对象类型,并且可能是数字,所以 if 语句将不会成功。 - James Berners
@James Berners:你所说的“type object”,是指“Class”类型吗?如果是,那么你可以使用asSubclass()函数将其转换为String类,或者使用isAssignableFrom()来检查它是否是String的超类。 - keelar
@fge 我已经尝试过了,例如我得到了类型对象和值为10,但if语句不起作用。 - James Berners
如果“不工作”是指评估为“false”,那是可以预料的,因为Integer不能转换为String - arshajii
@JamesBerners:如果你需要一个对象的字符串表示,那么我的答案可能适合你。 - keelar

2

由于String是一个final类(因此不能有子类),我建议使用getClass而不是instanceof

if (fieldValue != null && fieldValue.getClass() == String.class)

1
if (fieldValue instanceof String) {

    keyVal.put(fieldName, (String) fieldValue);

}

无法使用它,因为 if 不起作用,数据 fieldValue 是对象类型... - James Berners

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接