无法将String强制转换为ClassName

时间:2016-07-28 12:41:28

标签: java android

虽然我可以做以下

int a =10;
long b = (long)a;

我很奇怪为什么我在尝试跟踪时会遇到异常,

Test test = new Test();
String s = test.toString();
Test test1 = (Test)s;

任何澄清都会更有帮助。

2 个答案:

答案 0 :(得分:3)

Casting实际上并没有制作新对象。你试图对编译器说:

  

您认为这是对String类型的引用;但请相信我,我知道它是Test类型。

它实际上并没有以任何方式改变对象。

但是如果引用是String的实例,它也可能也是对Test实例的引用,因此编译器禁止转换:{{1} }不是Test的子类。

要将String转换为String,您实际上需要构建Test的实例。例如,可能有一个构造函数需要Test;然后:

String

或者可能是静态工厂方法:

Test test1 = new Test1(s);

答案 1 :(得分:0)

select upper(substr(regexp_replace('IsThisAnExample', '([[:lower:]])([[:upper:]])', '\1 \2'),1,1))|| lower(substr(regexp_replace('IsThisAnExample', '([[:lower:]])([[:upper:]])', '\1 \2'),2)) from dual 不是Test的类型,无法投放。 toString()是一个将一个转换为另一个的方法。 你可能需要的是一个Test构造函数,它接受String并根据提供的数据构建对象。