2015-03-26 17 views
5

Czy w Javie można importować pakiety i nadawać temu pakietowi konkretną nazwę?Alias ​​importu pakietu Java

Mam obecnie klasę, która używa niektórych DTO z zaplecza i pakietu usług. W obu pakietach DTO mają tę samą nazwę. I myślę, że to nie jest całkiem czytelne:

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); 

To jest mały przykład. Klasa jest dość skomplikowana i zawiera dużo więcej kodu.

Czy Java ma coś takiego jak import com.backend.mypackage.a.b.c.d.UserDto as userDtoBackend, więc mogę skrócić mój kod źródłowy?

+1

Myślę, że znacznie łatwiej byłoby podać różne klasy, różne nazwy. ;) tj. zamiast aliasowania klas, zmień ich nazwy. –

Odpowiedz

9

Nie, nie można wykonać "importu x jak y;" w Javie.

Co możesz zrobić, to rozszerzyć klasę lub napisać dla niej klasę opakowania i zaimportować ją.

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) { 
     // ... 
    } 
} 
+1

Tak, to zdecydowanie sposób. Ale jeśli masz ponad 100 dto, nie nadaje się do zaimplementowania takiej klasy opakowania dla każdego. –

+2

To prawda. Ale jeśli manipulujesz ponad 100 DTO: s w tej samej metodzie, możesz najpierw rozwiązać inne problemy :) – folkol

+0

Tak, rzeczywiście ...: D –

3

Nie ma sposobu, aby zrobić to w Javie.