2014-06-16 32 views
-1

我有一個抽象類MotorFahrzeug和擴展類LKW,如下所示。我編寫了一個通用類,其類型參數爲<T extends MotorFahrzeug>,實現了比較器。我想知道爲什麼在這個泛型類中的方法compare(T m1, T m2)有權訪問受保護的字段。有人可以解釋這一點嗎?受保護字段和泛型

package de.bauer; 

public abstract class MotorFahrzeug { 

    protected int id; 
    protected int hubraum; 
    protected int leistung; 


    // some stuff 
    } 
} 


package de.bauer; 

public class LKW extends MotorFahrzeug { 

    private String kategorie = "Nutzfahrzeug"; 

    // Konstruktor 
    LKW(int i, int l, int h) { 

     // some stuff 
    } 

    // some stuff 

} 

package de.bauer; 

import java.util.Comparator; 

public class VergleichHubraum<T extends MotorFahrzeug> implements Comparator<T> { 

    @Override 
    public int compare(T m1, T m2) { 

     int retValue = -1; 

     if(m1.hubraum == m2.hubraum) 
      retValue = 0; 

     if(m1.hubraum > m2.hubraum) 
      retValue = 1; 


     return retValue; 
    } 
} 
+0

'de.bauer''de.bauer''de.bauer'。 –

回答

1

附有一項聲明等

package de.bauer; 
public class VergleichHubraum<T extends MotorFahrzeug> implements Comparator<T> { 

類型T是保證被綁定到的MotorFahrzeug子類型。由於MotorFahrzeug與上面聲明的類相同,因此可以通過T類型的引用訪問其任何protected成員。

+0

非常感謝。 – Steve