我可以将Object类型转换为String吗?
例如:方法getResponse()
返回Object
类Request
。
String s1=(String)req.getResponse();
答案 0 :(得分:1)
java不能将一个对象神奇地转换为任何其他对象,除非它们具有父子关系。
演员阵容不会以这种方式运作。
所有String
都是Object
。但并非所有Object
都是String
。
编辑注释(你的意思是在java 中无法进行向下投射):
没有。我不是那个意思。在像
这样的情况下可以进行向下铸造Object obj = getThat();
String s = (String) obj;
可能,如果你看到的话。如果getThat()
方法返回String
,则上述代码执行正常。否则为Exception
。
同样的规则也适用于getResponse()
方法。
答案 1 :(得分:0)
只有在Request也是String的子类(在你的情况下可能不是这样)时,这才有效。你可以做的是:
String s1=req.getResponse().toString();
答案 2 :(得分:0)
如果getResponse()返回String对象但是在Object类型的引用中,则可以接受String,因为respose已经是字符串。
另一方面,如果返回的对象实际上不是String的对象,它将为您提供classcastexeption。要处理这种情况,建议在投射之前检查对象的类型
喜欢
Object returnedObject = req.getResponse();
if(returnedObject instanceof String)
{
// we can cast it now as string
String str = (String) returnedObject;
// use str as string safely now
}
答案 3 :(得分:0)
不,你不能。这是对Java中的强制转换的一个breef解释:
总之,仅在类之间进行转换时类型转换 通知编译器应该将某个对象视为a 某种类型。但是,该对象是否确实属于该类型 取决于运行时类型信息。此外,仅限铸造型 从超类对象到子类对象是有意义的。那就是 B是A的子类,x被声明为A类型:(A x;),其中 表示x具有静态类型A,则B y =(B)x;是必需的,以 输入x从A对象到B对象。在中输入类型 从子类到超类的反向是隐式的:x = y; //假设y有静态类型B.这是因为B对象总是如此 一个对象。为什么允许(B y =(B)x;)?因为A对象可能 是一个B对象。
此外,只允许在超类和超类之间进行类型转换 子类。如果C也扩展/实现A,则从B转换为C或 C到B都会产生编译器错误。一般来说B和C. 每个都包含在另一个中找不到的信息和程序,所以一个 不能简单地成为"另一个。