Java包导入别名[重复]

Posted

技术标签:

【中文标题】Java包导入别名[重复]【英文标题】:Java Package Import Alias [duplicate] 【发布时间】: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 这样我可以缩短我的源代码?

【问题讨论】:

我认为给不同的类,不同的名字会简单得多。 ;) 即不要给类起别名,而是重命名它们。 【参考方案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中不仅仅有意义:(

以上是关于Java包导入别名[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java包机制

HSQLDB:遇到重复的 sql 别名

需要 Python 包导入帮助 [重复]

Java 设置PDF跨页表格重复显示表头行

如何确保正确配置anaconda环境以导入包[重复]

如何在不重复导入***名称的情况下构造python包