铸造通用

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)

Pau*_*and 5

你可以做你想做的事,但你需要先通过另一个演员:

public String tempString;
public E genericObject;

tempString = (String) ((Object) genericObject);
Run Code Online (Sandbox Code Playgroud)

问题是你不能在层次结构中投射"横向",你只能抛弃.也就是说,你可以投从ObjectString,但不能从NumberString.

注意,如果E真的不是一个字符串,你将得到一个ClassCastException,但是如果你只是在你知道E真的是一个字符串的情况下这样做,那么你会没事的.

  • @TwoThe实际上,结果将是String或``ClassCastException``.我已添加评论以澄清这一点. (2认同)