Java 什么是;((类)obj.method();做
我在一份作业中看到了上面的代码,但找不到任何相关信息。有人能解释一下这是什么意思吗Java 什么是;((类)obj.method();做,java,casting,Java,Casting,我在一份作业中看到了上面的代码,但找不到任何相关信息。有人能解释一下这是什么意思吗 obj将是类class的实例,method是该对象的方法 为什么class.obj.method是错误的 我试着搜索与类型转换相关的主题,但没有找到我想要的答案。我不知道如何研究这样的事情。欢迎提供任何有关这方面的提示 假设obj是class的一个实例(尽管我怀疑您的意思是class带有大写字母C),然后调用一个名为method()的方法 这是从一个类型调用到另一个类型,当您被迫这样做时,这是因为它是向下转换,所
obj
将是类class
的实例,method
是该对象的方法
为什么class.obj.method
是错误的
我试着搜索与类型转换相关的主题,但没有找到我想要的答案。我不知道如何研究这样的事情。欢迎提供任何有关这方面的提示 假设
obj
是class
的一个实例(尽管我怀疑您的意思是class
带有大写字母C),然后调用一个名为method()的方法
这是从一个类型调用到另一个类型,当您被迫这样做时,这是因为它是向下转换,所以转换为更窄的类型。假设如下:
Base base = new Derived();
base.derivedMethod(); // compilation error: base is statically a Base
((Derived)base).derivedMethod(); // no compilation error and you are able to call a method of Derived on the object
向上转换是隐式的(派生的
已经是基本的),而向下转换必须是显式的
由于向下转换是从程序中删除强类型安全性的唯一操作(您要求类型检查器在执行转换时不要遵循类型检查),因此应尽可能避免使用它们
当然,将对象强制转换为不包含在对象层次结构树中的类型是错误的a将导致运行时错误(即a)具体来说,它不会放置任何内容。它正在将对象强制转换为给定类型。(类)x是强制转换运算符。。。它将对象引用x强制转换为类型类(或引发强制转换异常)。操作顺序需要外部巴拉那。你确定吗?这真的是课堂而不是课堂吗?带有小写c的类是保留字:您也可以将其命名为((Hello)world).helloworld()。在这种情况下,Hello是您的类,world是它的实例,helloworld将是方法。所以他们在作业中没有使用任何保留字。有什么问题吗?是什么让你认为它错了?我不清楚“((class)obj.method()”和“class.obj.method”是用于不同的用途的。我现在知道我需要对打字有更深的理解。谢谢
Base base = new Derived();
base.derivedMethod(); // compilation error: base is statically a Base
((Derived)base).derivedMethod(); // no compilation error and you are able to call a method of Derived on the object