2011-07-18 12 views

Odpowiedz

6

Nie sądzę. To nie jest takie proste zadanie. Twój przykład jest prosty, ale rozważ to:

class A { 
    private int a; 
    public void foo(){ 
     System.out.println(a); 
    } 
} 

class AA extends A { 
    private int a; //its not the same 'a'!! 
    public void foo(){ //ok, we override, so we can 'overwrite', but... 
     super.foo(); //... what with this? 
     System.out.println(a); 
    } 
} 

Jak widać, trudno go zautomatyzować. A co, jeśli jakaś klasa w tej hierarchii rozszerza jakąś klasę lib, dla której nie masz źródeł? Łączenie jest więc trudne i bardzo złe, dlatego nie sądzę, by ktokolwiek napisał takie narzędzie.

+0

Właśnie znalazłem Refactor-> Push Down/Push Up. – unR

+5

** Refactor -> Push Up/Push Down ** przenosi pola i metody w górę i w dół hierarchii typów. Aktualizuje również wystąpienia. Ale jak mówi Adam Jurczyk, najprawdopodobniej spowoduje to pewne błędy. Zwłaszcza, gdy typy odnoszą się do siebie lub mają pola/metody indentyczne (equals(), hashCode(), serialVersionUID). – unR

+1

Przepraszam, moje złe. To narzędzie, którego potrzebujesz, w prostych przypadkach. W przypadkach takich jak ten podany przeze mnie, po prostu scala kod i ostrzega o zachodzeniu na siebie. Heh, żyjesz i uczysz się: D –

Powiązane problemy