web-dev-qa-db-ja.com

Javaパッケージインポートエイリアス

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ソースコードを短くできるので?

12
Dirk Rother

いいえ、「xを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) {
        // ...
    }
}
16
folkol

Javaでこれを行う方法はありません。

5
immibis