2014-06-16 37 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