什么“((class)obj).method()”做什么?

时间:2013-12-31 14:58:17

标签: java casting

我在其中一个作业中看到了上述代码,但无法找到有关它的任何信息。有人请解释一下这意味着什么?

obj将是类class的一个实例,而method是此对象的一种方法。

为什么class.obj.method错了?

我尝试搜索与类型转换相关的主题,这些主题没有提供我正在寻找的答案。我不知道如何研究这样的事情。欢迎任何提示。

2 个答案:

答案 0 :(得分:4)

假设objclass的一个实例(虽然我怀疑你的意思是Class有一个大写的C)然后调用一个名为method()的方法

((Class)obj) //Casts obj into a Class object
((Class)obj).method() //calls a method in obj (which is now in a Class object)

答案 1 :(得分:3)

这被称为type casting从一种类型到另一种类型,当你被迫这样做时,因为它是向下转换,所以转换为更窄的类型。假设如下:

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

上传是隐式的(Derived已经是Base),而必须展示下来演员。

由于向下转换是唯一一种从程序中删除强类型安全性的操作(你要求类型检查器在进行转换时不遵循类型检查),你应该尽可能避免使用它们。

当然,将对象转换为未包含在对象层次结构树中的类型是错误的,这将导致运行时错误(即ClassCastException