是否可以引用具有部分限定名称的Java类型?如果是这样,怎么样?
场景:我经常发现自己有一个Activity
需要视图的数据类(例如).我的标准做法是命名这个有效的类ActivityView
,但是这个视图类总是以tld.organization.project.views
命名空间结束,其中"View"后缀完全是多余的.
我想删除"View"后缀(因此类型将是tld.organization.project.Activity
和tld.organization.project.views.Activity
),但这意味着当我在同一个类中引用它们时,我必须使用命名空间来限定类型.使用命名空间来限定类型引用本身并不是一件坏事,但重复任何一种类型的完全限定名称都是重复且难以阅读的.
引用部分限定类型(类似于~.Activity
或类似的东西~.views.Activity
)将删除那个残余.某种类型的别名会回答,但似乎Java不支持这种功能.还有其他选择吗?
不,你不能用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实际上,我可能会先尝试射击你.