当前位置: 代码迷 >> J2SE >> Generics,该怎么解决
  详细解决方案

Generics,该怎么解决

热度:65   发布时间:2016-04-23 20:32:20.0
Generics
package com.my.example;

class  A implements  Runnable{

    @Override
    public void run() {

    }
}

class  B extends  A{}

public  class FileDel <T extends Runnable> {

    public  Class<? extends T> getClassA(){return A.class;}
    public  Class<? super T> getRunable() {return Runnable.class;}

    public static void main(String[] args){

    }
}


这里的getClassA要怎么写才对?
------解决方案--------------------
这样:public Class<? extends Runnable> getClassA()


原因:class FileDel <T extends Runnable>只能说明T继承/实现Runnable,但是A不一定继承T
------解决方案--------------------
楼上说的,再加上因为泛型的消除机制,在编译时getClassA()方法无法知道A.class是Class<T>的,需要加强制类型转换,以下
    public  Class<T> getClassA(){return (Class<T>)A.class;}