嵌套命名空间中的 Java 类的别名
Posted
技术标签:
【中文标题】嵌套命名空间中的 Java 类的别名【英文标题】:Alias a Java class from nested namespaces 【发布时间】:2019-04-23 12:03:44 【问题描述】:我有一个位于此处的 Java 类:
package suman;
public class Output
public static class foo
public static class PUT
public static interface basic
public static class req
public static class Body // namespaced class "Body"
String foo = "bar";
int bar = 5;
boolean zoom = false;
我是这样使用的:
import static suman.Output.foo;
public class FooImplementer
public void bar()
foo.PUT.basic.req.Body x = new foo.PUT.basic.req.Body()
但是,这是很多字符,我正在寻找一种以某种方式为其别名的方法。我能想到别名的唯一方法是使用私有类,如下所示:
class Body extends foo.PUT.basic.req.Body
private JsonObject()
我可以这样使用它:
public void bar()
Body x = new Body()
是否有其他方法可以做到这一点?
【问题讨论】:
如果您的实际模型需要如此多的嵌套类,请更改您的模型;) 只需导入该类并使用其简单名称。import suman.Output.foo.PUT.basic.req.Body;
...Body x = new Body();
@azro 我希望,但是这个文件有很多类型,所以一个文件中有很多嵌套的东西
【参考方案1】:
只需使用普通导入:
import suman.Output.foo.PUT.basic.req.Body;
public class FooImplementer
public void bar()
Body x = new Body();
【讨论】:
static 导入,而非正常导入。 应该是import static suman.Output.foo.PUT.basic.req.Body
,因为它们是静态类。
@AlexanderMills 这与静态导入无关。静态导入用于导入另一个类的静态成员,因此您不必在它们前面加上类名。
@AlexanderMills 那么扩展它有什么帮助呢?
我认为他的扩展想法将允许将 a.long.Body
和 another.long.Body
别名化为两个较短的名称,不一定称为 Body
。 @AlexanderMills Java does not provide import aliasing,不幸的是。以上是关于嵌套命名空间中的 Java 类的别名的主要内容,如果未能解决你的问题,请参考以下文章