2016-07-09 4 views
0

Ich versuche, einen Konstruktor zu einem Groovy-Klasse hinzuzufügen, aber ein zweites Verfahren als Konstruktor Hinzufügen i einen Compiler-Fehler bin immer ..Groovy Konstruktor Fehler kompilieren geben ‚aufgrund Hash-Kollision“ in Konstrukteuren

Unfähig Klasse zu kompilieren ... durch Hash-Kollision in Konstrukteuren

class BaseException extends RuntimeException { 

private Integer status 
private String message 
private Long timestap 
private List<ErrorMessage> errors 

    BaseException(Integer status, String message, List<ErrorMessage> errorMessageList) { 
     this.status = status 
     this.message = message 
     this.timestap = System.currentTimeMillis(); 
     this.errors = errorMessageList 
    } 

    // --- 
    // adding the method below gives a compile error 
    // --- 
    BaseException(Integer status, String message, List<ErrorCode> errorCodeList) { 
     this.status = status 
     this.message = message 
     this.timestap = System.currentTimeMillis(); 
     this.errors = [] 
     errorCodeList.each { error -> 
      this.errors.add(new ErrorMessage(error.code, error.description)) 
     } 
    } 
    .. code emitted 
} 

Jeder Hinweis, was ich falsch mache?

+2

Sie nicht zwei Konstruktoren oder Methoden mit derselben Signatur haben kann, wenn Generika wegen Löschung entfernt. Gleiches gilt für Java. Wenn Sie das wirklich benötigen, ist es üblich, zwei statische Factory-Methoden mit unterschiedlichen Namen und einen weniger zugänglichen Konstruktor zu verwenden, der beide Fälle behandelt. –

+0

Sie sollten diesen Kommentar in eine Antwort einfügen. –

+0

@DavidM.Karr fertig ... Ich werde ein Beispiel finden, wenn ich an einen Computer komme ;-) Telefone sind Quatsch zum Schreiben von Code –

Antwort

1

Sie nicht zwei Konstrukteure haben kann oder mir thods mit der gleichen Signatur, sobald Generika aufgrund von Löschung entfernt werden.

Das gleiche gilt für Java.

Wenn Sie wirklich, wirklich diese benötigen, ist es üblich, zwei statische Factory-Methode mit unterschiedlichen Namen zu haben und einen weniger zugänglichen Konstruktor, beiden Fälle behandelt

Verwandte Themen