JFC*_*JFC 1 java generics casting
是否可以将通用对象转换为字符串之类的东西?
我认为转换泛型类似于普通的对象转换,如:
public String tempString;
public E genericObject;
tempString = ((String) genericObject);
Run Code Online (Sandbox Code Playgroud)
但是,在编译时我仍然会遇到不兼容的类型错误.
required: String
found: E
Run Code Online (Sandbox Code Playgroud)
你可以做你想做的事,但你需要先通过另一个演员:
public String tempString;
public E genericObject;
tempString = (String) ((Object) genericObject);
Run Code Online (Sandbox Code Playgroud)
问题是你不能在层次结构中投射"横向",你只能抛弃.也就是说,你可以投从Object
到String
,但不能从Number
到String
.
注意,如果E
真的不是一个字符串,你将得到一个ClassCastException,但是如果你只是在你知道它E
真的是一个字符串的情况下这样做,那么你会没事的.