请教泛型T和?的用法?

比如一个类定义为

class aa<T extends aa<?>>{} 

,这种类的定义方式有什么意义,另外如果这样定义的话是实例化这个类应该是用

 aa<T>()

的形式,而aa<?>是会报错的,为什么在类的定义中aa'<?>'不会报错?

定义的时候当然可以用?,实例化的时候必须用具体的类名了啊。