Java 类型转换中使用圆括号的原因

Java 类型转换中使用圆括号的原因,java,object,methods,type-conversion,Java,Object,Methods,Type Conversion,为什么返回BlogPost的tite的行需要在引用obj和BlogPost周围加上括号?这在Java中称为类型转换。请参阅Oracle Java文档中的Casting对象一节:这在Java中称为类型转换。请参阅本Oracle Java文档中的Casting对象一节:假设obj的引用与BlogPost的引用类型不同,则语句((BlogPost)obj)会将obj转换为BlogPost类型。不带括号的语句: if (obj instanceof String) { return (Strin

为什么返回
BlogPost
的tite的行需要在引用
obj
BlogPost
周围加上括号?

这在Java中称为类型转换。请参阅Oracle Java文档中的Casting对象一节:

这在Java中称为类型转换。请参阅本Oracle Java文档中的Casting对象一节:

假设
obj
的引用与
BlogPost
的引用类型不同,则语句
((BlogPost)obj)
会将
obj
转换为
BlogPost
类型。不带括号的语句:

if (obj instanceof String) {
    return (String) obj;
} else {
    return ((BlogPost) obj).getTitle(); 
(BlogPost) obj.getTitle();
这意味着:将
getTitle()
的返回值强制转换为
BlogPost
。与父母在一起时使用以下语句:

if (obj instanceof String) {
    return (String) obj;
} else {
    return ((BlogPost) obj).getTitle(); 
(BlogPost) obj.getTitle();

方法:将
obj
强制转换为类型
BlogPost
,然后在类型
BlogPost
的实例上调用方法
getTitle()
,假设
obj
的引用的类型与
BlogPost
不同,则语句
((BlogPost)obj)
是否将
obj
转换为类型
BlogPost
。不带括号的语句:

if (obj instanceof String) {
    return (String) obj;
} else {
    return ((BlogPost) obj).getTitle(); 
(BlogPost) obj.getTitle();
这意味着:将
getTitle()
的返回值强制转换为
BlogPost
。与父母在一起时使用以下语句:

if (obj instanceof String) {
    return (String) obj;
} else {
    return ((BlogPost) obj).getTitle(); 
(BlogPost) obj.getTitle();

方法:将
obj
转换为类型
BlogPost
,然后在类型
BlogPost
的实例上调用方法
getTitle()
,这将
obj
转换为
BlogPost
,并在此上下文下执行
getTitle

((BlogPost) obj).getTitle();
然而,这将对
obj
执行
getTitle
(这可能不是为这个类定义的),并将结果转换为
BlogPost
(这对
String->BlogPost
不起作用)


最后,这是代码执行顺序的决定因素,以便让
obj
拥有正确的上下文。

这将把
obj
转换为
BlogPost
并在此上下文下执行
getTitle

((BlogPost) obj).getTitle();
然而,这将对
obj
执行
getTitle
(这可能不是为这个类定义的),并将结果转换为
BlogPost
(这对
String->BlogPost
不起作用)

最后,这是决定代码执行顺序的一个因素,以便让obj拥有正确的上下文; 将对象强制转换为blogpost类型,然后调用getTitle()方法。 如果它写为(BlogPost)obj.getTitle();,它将从getTitle()方法获取返回值,然后将其强制转换为BlogPost()的类型。

((BlogPost)obj); 将对象强制转换为blogpost类型,然后调用getTitle()方法。 如果它写为(BlogPost)obj.getTitle();,它将从getTitle()方法获取返回值,然后将其转换为BlogPost()类型