Java中这两种投射方式有什么区别?

Ben*_*ons 5 java casting

Java中这两种投射方式有什么区别?

  1. (CastingClass) objectToCast;

  2. CastingClass.class.cast(objectToCast);

来源Class#cast(Object)如下:

public T cast(Object obj) {
if (obj != null && !isInstance(obj))
    throw new ClassCastException();
return (T) obj;
}
Run Code Online (Sandbox Code Playgroud)

所以,cast基本上是转换操作的通用包装器,但我仍然不明白为什么你需要一个方法.

Chs*_*y76 7

您只能将第一个表单用于静态链接的类.

在许多情况下,这还不够 - 例如,您可能已经使用反射获取了类实例,或者它已作为参数传递给您的方法; 因此第二种形式.