【问题标题】:Java Package Import Alias [duplicate]Java包导入别名[重复]
【发布时间】:2015-05-30 04:02:34
【问题描述】:

在 Java 中是否可以导入包并为这个包导入一个特定的名称?

我目前有一个类,它使用来自后端和服务包的一些 DTO。在这两个包中,DTO 具有相同的名称。而且我认为这不太可读:

com.backend.mypackage.a.b.c.d.UserDto userBackend = new com.backend.mypackage.a.b.c.d.UserDto();
com.service.mypackage.a.b.c.d.UserDto userService = new com.service.mypackage.a.b.c.d.UserDto();

mapper(userBackend, userService);

这是一个小例子。该类实际上非常复杂,并且其中包含更多代码。

Java 是否有类似import com.backend.mypackage.a.b.c.d.UserDto as userDtoBackend 这样我可以缩短我的源代码?

【问题讨论】:

  • 我认为给不同的类,不同的名字会简单得多。 ;) 即不要给类起别名,而是重命名它们。

标签: java syntax import package


【解决方案1】:

不,你不能做“import x as y;”在 Java 中。

您可以做的是扩展该类,或为其编写一个包装类,然后导入该类。

import com.backend.mypackage.a.b.c.UserDto;

public class ImportAlias {
    static class UserDtoAlias extends com.backend.mypackage.a.b.c.d.UserDto {
    }

    public static void main(String[] args) {
        UserDto userBackend = new UserDto();
        UserDtoAlias userService = new UserDtoAlias();

        mapper(userBackend, userService);
    }

    private static void mapper(UserDto userBackend, UserDtoAlias userService) {
        // ...
    }
}

【讨论】:

  • 是的,这绝对是一种方式。但是,如果您有超过 100 个 dto,则不适合为每个单独实现这样的包装类。
  • 没错。但是如果你用同样的方法操作超过 100 个 DTO:s,你可能还有其他问题需要先解决:)
  • 你是个小天才! :)
  • 这不是一个好方法。这可能是大量需要不断更新的工作,并且难以解决静态方法。而且,例如,如果您将 xml 反序列化/序列化为 jaxb 生成的类,它将根本不起作用(或任何其他形式的反序列化)。
  • 是的,我同意。这不是解决他的问题的好方法,但这是做他想做的事情的一种方式。我不宽恕这一点。
【解决方案2】:

在 Java 中没有办法做到这一点。

【讨论】:

  • 有些东西在java中不仅仅有意义:(
猜你喜欢
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-05
  • 2012-10-26
  • 2021-01-27
  • 1970-01-01
相关资源
最近更新 更多