受保护的字段和泛型

时间:2014-06-16 17:55:48

标签: java generics comparator protected

我有一个抽象类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;
    }
}

1 个答案:

答案 0 :(得分:1)

声明如

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

类型T保证绑定到MotorFahrzeug的子类型。由于MotorFahrzeug与上面声明的类位于同一个包中,因此您可以通过protected类型的引用访问其T个成员。