java基础-泛型的继承问题

 1.使用泛型的时候发现和泛型同名的类的引用找不到对应的属性值

看上面的问题描述就可以清晰的发现问题了,因为在类上泛型定义了泛型,然后泛型的名字和要使用的类的对象一致,那么这个时候编译器会认为你这个地方是一个泛型,而不是你要使用的类,对于你这个泛型来说,自然是没有对应的属性的,只有Object类对象的方法。

public class Employee {
    public String name;
    public float money;
    public int age;

    public Employee(String name, float money, int age) {
        this.name = name;
        this.money = money;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", money=" + money +
                ", age=" + age +
                '}';
    }

    public void test(){

    }
}
public interface MyInterface<T> {
    public boolean compare(T t );
}
public class CompareMoney<Employee> implements MyInterface<Employee>{


    @Override
    public boolean compare(Employee employee) {
        return false;
    }
}

 2.代码修改

要实现的功能其实是指定父类中的泛型是要使用的Employee类,上面的代码在CompareMoney<Employee>也加上了泛型,这个写法等同于public class CompareMoney<T> implements MyInterface<T>,但是因为public class CompareMoney<Employee> implements MyInterface<Employee>的泛型名字写的是Employee类名,会把要使用的Employee类认为是泛型。

public class CompareMoney<T> implements MyInterface<T>{



    @Override
    public boolean compare(T t) {
        return false;
    }
}

 正确的使用方法,此时子类不具备泛型,因为已经规定了泛型的类型是Employee。

public class CompareMoney implements MyInterface<Employee>{



    @Override
    public boolean compare(Employee e ){
        return false;
    }
}

 3.总结反思

对泛型的使用理念不理解,对泛型的使用不熟悉,盲目的使用泛型,这个地方的接口使用泛型的原因是可以根据子类的实现接口时候指定一个类型,从而达到保持compare方法中的参数和指定的类型一致。

泛型的产生:定义类、属性、方法的时候不确定到底会用到什么类型,所以不确定的地方用泛型来表示。

泛型的作用:规定集合中所添加的数据结构的类型;在自定义类、接口的泛型时,可以方便子类实现不同类型的接口和父类,增加了扩展性。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值