2015-03-26 11 views
5

È possibile importare in Java in pacchetti e assegnare a questo pacchetto un nome specifico?Alias ​​dell'importazione pacchetto Java

Attualmente ho una classe, che utilizza alcuni DTO da un backend e un pacchetto di servizi. In entrambi i pacchetti i DTO hanno lo stesso nome. E penso che questo non sia abbastanza leggibile:

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

Questo è un piccolo esempio. La classe è in realtà piuttosto complessa e contiene molto più codice.

Java ha qualcosa come import com.backend.mypackage.a.b.c.d.UserDto as userDtoBackend in modo da poter abbreviare il mio codice sorgente?

+1

Penso che sarebbe molto più semplice dare classi diverse, nomi diversi. ;) Ad esempio, invece di creare aliasing delle classi, rinominale invece. –

risposta

9

No, non è possibile eseguire "import x come y;" in Java.

Ciò che si può fare è estendere la classe, o scrivere una classe wrapper per essa e importarla.

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

Sì, è sicuramente un modo. Ma se hai più di 100 dto non è adatto implementare una classe di wrapper di questo tipo per ognuno di essi. –

+2

Questo è corretto. Ma se si manipolano oltre 100 DTO: s nello stesso metodo, si potrebbero avere altri problemi da risolvere prima :) – folkol

+0

Sì, infatti ...: D –

3

Non c'è modo di farlo in Java.