这样:public Class<? extends Runnable> getClassA()
原因:class FileDel <T extends Runnable>只能说明T继承/实现Runnable,但是A不一定继承T

解决方案 »

  1.   

    楼上说的,再加上因为泛型的消除机制,在编译时getClassA()方法无法知道A.class是Class<T>的,需要加强制类型转换,以下
        public  Class<T> getClassA(){return (Class<T>)A.class;}
      

  2.   

    A 继承Runnable 对编译器是确定的, 
    T也要继承Runnable , 这个编译器可以确保,
    编译器无法确保的是 A继承T,  (虽然比如T是 class C extends Runnable{} 这中情况) 
    所以报错同理, 如果A.class 换成Runnable.class  也报错, 因为如果T 是Thread.class,  那么Class<? extends T> 无法包含Runnable 了