是否可以使用部分限定名称引用 Java 类型?如果是,怎么办?
场景:我经常发现自己有一个需要 View 的数据类(例如 Activity
)。我的标准做法是将这个类命名为 ActivityView
,这是可行的,但是这个 View 类总是以 tld.organization.project.views
命名空间结束,其中“View "后缀完全是多余的。
我想删除“View”后缀(因此类型将是 tld.organization.project.Activity
和 tld.organization.project.views.Activity
), 但这意味着当我在同一个类中引用它们时,我必须使用命名空间来限定类型。使用 namespace 来限定类型引用本身并不是一件坏事,但是重复任何一种类型的完全限定名称都是重复的并且难以阅读。
引用一个部分限定的类型(比如~.Activity
或~.views.Activity
)会消除这个问题。某种类型别名会回答,但 Java 似乎不支持此类功能。有没有其他选择?
最佳答案
不,您不能用 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();
}
我建议您遇到的名称问题可能指向需要解决的设计问题。
附言如果我不得不从事这样组织类(class)的项目,我可能不得不自杀。
附言实际上,我可能会先尝试射杀你。
关于java - 具有部分限定命名空间的引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10274381/