虽然我可以做以下
int a =10;
long b = (long)a;
我很奇怪为什么我在尝试跟踪时会遇到异常,
Test test = new Test();
String s = test.toString();
Test test1 = (Test)s;
任何澄清都会更有帮助。
答案 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并根据提供的数据构建对象。