如何将Object类型参数的值存入String、Integer等变量?Java报错处理
解决方案
你当前的代码逻辑本身是可行的——将Object类型返回值强制转换为String赋值给变量,出现报错大概率是代码笔误或编译环境的小问题(比如Fist类toString方法里的First和类名Fist不匹配,虽不直接导致类型转换错误,但可能引发编译异常)。以下是几种可靠的解决方式:
方案1:安全强制类型转换(推荐)
先判断对象类型再转换,避免运行时ClassCastException:
public class abc { public static void main(String[] args) { Fist f = new Fist("44"); Object ageObj = f.getAge(); String a; if (ageObj instanceof String) { a = (String) ageObj; System.out.println(a); } else { // 处理age非String类型的情况,比如设默认值或提示 a = ""; System.out.println("age不是String类型"); } } }
方案2:使用String.valueOf()处理任意类型
该方法可安全处理null值,将任意Object类型转为String:
public class abc { public static void main(String[] args) { Fist f = new Fist("44"); String a = String.valueOf(f.getAge()); System.out.println(a); } }
若age为null,String.valueOf()会返回字符串"null",不会抛出空指针异常。
方案3:调用toString()方法(需判空)
确定age不为null时,可直接调用toString():
public class abc { public static void main(String[] args) { Fist f = new Fist("44"); Object ageObj = f.getAge(); String a = ageObj != null ? ageObj.toString() : ""; System.out.println(a); } }
注意:若age为null,直接调用toString()会抛出NullPointerException,必须先判空。
另外,建议修正Fist类toString方法里的笔误,把First改为Fist,保持类名一致。
内容的提问来源于stack exchange,提问作者Drishty Varshney
相关产品推荐
相关产品推荐

