【问题标题】:Alias a Java class from nested namespaces嵌套命名空间中的 Java 类的别名
【发布时间】: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 我希望,但是这个文件有很多类型,所以一个文件中有很多嵌套的东西

标签: java


【解决方案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.Bodyanother.long.Body 别名化为两个较短的名称,不一定称为 Body。 @AlexanderMills Java does not provide import aliasing,不幸的是。
猜你喜欢
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 2011-03-13
  • 1970-01-01
  • 2015-02-17
  • 2022-01-02
相关资源
最近更新 更多