避免长对象名称的优雅方式(完全限定 Class 名称)

Elegant way to avoid long object names (Fully Qualified Class Name)

我有一个 class,我在其中使用了两个碰巧具有相同名称的对象。 一个是:

   com.google.api.services.calendar.model.Event

和另一个同名的3ed方对象,说:

   com.some.other.package.Event

对两个对象都使用导入不是一个好的选择,因为它们会相互屏蔽。 在整个代码中使用非常长的名称看起来也不太好。

创建 "dummy" 类型只是为了更改其名称:

public class CEvent extends com.google.api.services.calendar.model.Event {}     

似乎不​​是一个优雅的解决方案。

如何在保留原始对象名称(事件)的同时使用较短的路径名称?

您不能在 Java 中缩短 class 个名字;您可以导入 class 名称(不带限定符使用它)或使用完全限定名称。因此,至少有一个 Event class 必须使用其完全限定名称来引用。 (除非,如您所说,您子class其中之一只是为了节省打字时间。)

Java tutorials 在讨论名称歧义时解决了这个问题:

If a member in one package shares its name with a member in another package and both packages are imported, you must refer to each member by its qualified name.

在Java中是不可能的,唯一的办法就是使用类的完整限定名。但是,您可以在其他基于 JVM 的语言中执行此操作,例如 Scala:

import com.some.other.package.Event => OtherEvent

或Groovy

import com.some.other.package.Event as OtherEvent

Java提供2种方式:

  1. 对每个 class 使用 Fully Qualified Class Name,这是您不想要的
  2. 一个class使用class name,另一个
  3. 使用Fully Qualified Class Name

Alternate,就是Sub-class另一个class,然后就可以用新的subclass名字了。 (导入子class)