Java 包导入别名

2022-09-02 01:02:31

在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

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

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

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

public class ImportAlias {
    static class UserDtoAlias extends com.service.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) {
        // ...
    }
}

答案 2

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