【问题标题】:Elegant way to avoid long object names (Fully Qualified Class Name)避免长对象名称的优雅方法(完全限定类名称)
【发布时间】:2015-09-02 06:07:22
【问题描述】:

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

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

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

   com.some.other.package.Event

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

创建一个“虚拟”类型只是为了改变它的名字:

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

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

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

【问题讨论】:

    标签: java naming-conventions alias type-alias


    【解决方案1】:

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

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

    或 Groovy

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

    【讨论】:

      【解决方案2】:

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

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

      如果一个包中的成员与另一个包中的成员共享其名称,并且两个包都被导入,则必须通过其限定名称引用每个成员。

      【讨论】:

        【解决方案3】:

        Java 提供了两种方式:

        1. 为每个班级使用Fully Qualified Class Name,您不想这样做
        2. 一个类使用class name,其他类使用Fully Qualified Class Name

        Alternate,就是对其他类进行Sub-class,然后就可以使用新的子类名了。 (导入子类)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-09
          相关资源
          最近更新 更多