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

cqc*_*law 12 java types

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

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

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

引用部分限定类型(类似于~.Activity或类似的东西~.views.Activity)将删除那个残余.某种类型的别名会回答,但似乎Java不支持这种功能.还有其他选择吗?

Rya*_*art 7

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

package tld.organization.project;
public class Activity {}
Run Code Online (Sandbox Code Playgroud)

和:

package tld.organization.project;
public class Views {
    public static class Activity {}
}
Run Code Online (Sandbox Code Playgroud)

然后可以称为:

public void whatever() {
    Activity a = new Activity();
    Views.Activity a2 = new Views.Activity();
}
Run Code Online (Sandbox Code Playgroud)

我建议你用名字遇到的问题可能指向需要整理的设计问题.

PS如果我不得不在一个组织课程的项目上工作,我可能不得不自己开枪.

PPS实际上,我可能会先尝试射击你.

  • 分离有很多种.鉴于"MVC"的解释范围,我不想假设我知道你所说的"数据"与"观点"类的意思,但我看到的指标中我从来没有同意与实践你的包名:基于他们生活在IE中应用的"层",有一个"道"包userDAO的,AccountDao,......,以及"视图"包用户视图,AccountView,...我坚定地认为包装上的课这是一个更容易理解,更不容易出现包装纠结,而是包含"用户"和"帐户"包,每个包含相关的类. (2认同)