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包导入别名[重复]的主要内容,如果未能解决你的问题,请参考以下文章