带部分限定命名空间的引用类型

时间:2012-04-23 03:13:23

标签: java types

是否可以引用具有部分限定名称的Java类型?如果是这样,怎么样?

场景:我经常发现自己需要一个需要视图的数据类(例如Activity)。我的标准做法是将此类命名为ActivityView,但这个视图类总是以tld.organization.project.views命名空间结束,其中“视图”后缀完全是多余的。

我想删除“查看”后缀(因此类型将是tld.organization.project.Activitytld.organization.project.views.Activity),但这意味着我必须使用命名空间来限定类型,当我在同班。使用命名空间来限定类型引用本身并不是一件坏事,但重复任何一种类型的完全限定名称都是重复且难以阅读的。

引用部分限定类型(类似~.Activity~.views.Activity)会删除该错误。某种类型的别名会回答,但似乎Java不支持这种功能。还有其他选择吗?

2 个答案:

答案 0 :(得分:7)

不,你不能用Java中的包来做到这一点。您可以获得的最接近的是将事物组织成类的嵌套层次结构而不是包。在那个和战略静态导入之间,你可以获得预期的效果,尽管这将是一个非常混乱的解决方案。例如:

package tld.organization.project;
public class Activity {}

package tld.organization.project;
public class Views {
    public static class Activity {}
}

然后可以称为:

public void whatever() {
    Activity a = new Activity();
    Views.Activity a2 = new Views.Activity();
}

我建议您使用姓名时遇到的问题可能指向需要整理的设计问题。

P.S。如果我不得不参与一个组织课程的项目,我可能不得不自己开枪。

P.P.S。实际上,我可能会先尝试射击你。

答案 1 :(得分:-1)

你想说你不想写:

tld.organization.project.views.ActivityView

每次使用ActivityView

使用import

例如。而不是像这样使用类JOptionPane的完全限定名称:

class ImportTest {
    public static void main(String[] args) {
        javax.swing.JOptionPane.showMessageDialog(null, "Hi");
        System.exit(0);
    }
}

在开头导入类,如下所示:

import javax.swing.JOptionPane;  // Make a single class visible.

class ImportTest {
    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "Hi");
        System.exit(0);
    }
}

现在您可以在班级中直接使用JOptionPane。

相关问题