2015-03-26 18 views
5

Ist es in Java möglich, Pakete zu importieren und diesem Paket einen bestimmten Namen zu geben?Java Package Import Alias ​​

Ich habe derzeit eine Klasse, die einige DTOs aus einem Back-End und einem Service-Paket verwendet. In beiden Paketen haben die DTOs den gleichen Namen. Und ich denke, das ist nicht ganz lesbar:

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

Dies ist ein kleines Beispiel. Die Klasse ist eigentlich ziemlich komplex und enthält viel mehr Code.

Hat Java etwas wie import com.backend.mypackage.a.b.c.d.UserDto as userDtoBackend, so kann ich meinen Quellcode verkürzen?

+1

Ich denke, es wäre viel einfacher, verschiedene Klassen, verschiedene Namen zu geben. ; d. h. anstatt die Klassen zu aliasieren, benennen Sie sie stattdessen um. –

Antwort

9

Nein, Sie können nicht "importieren x als y;" in Java.

Was Sie tun können, ist, die Klasse zu erweitern oder eine Wrapper-Klasse dafür zu schreiben und diese stattdessen zu importieren.

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

Ja, das ist definitiv ein Weg. Aber wenn Sie über 100 dto's haben, ist es nicht geeignet, eine solche Wrapper-Klasse für jeden einzelnen zu implementieren. –

+2

Das ist richtig. Aber wenn du über 100 DTOs mit der gleichen Methode manipulierst, hast du möglicherweise andere Probleme, die du zuerst lösen musst :) – folkol

+0

Ja, tatsächlich ...: D –

3

Es gibt keine Möglichkeit, dies in Java zu tun.