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;}