初看下面的代码片段:
class GetDispatcher {
Object instance; // Controller实例
Method method; // Controller方法
String[] parameterNames; // 方法参数名称
Class<?>[] parameterClasses; // 方法参数类型
}
对于Class<?>[] parameterClasses; // 方法参数类型
,这一行的Class<?>没明白什么意思,网上看到一篇文章《搞懂Java的Class类 》,介绍的比较详细。
用个通俗的话讲,市面上有很多手机厂商,每个手机的说明书上肯定有内存、屏幕大小、CPU等信息,这些都是我们购买时关注的,我们就把这个关注的内容提炼一下叫做,Phone类,等价于Class类,使用时可以通过 苹果手机.phone.方法()获取信息。
光有一个内存、屏幕大小、CPU等信息,没有实际意义,所以无法直接new一个Phone出来。
回到上面说的Class<?>[] parameterClasses
,上面提到的那篇文章里,说了Field,Method,那这个参数类型为啥是Class呢? 因为参数类型肯定是String、Boolean等,肯定是一个Class,由于不确定具体是哪种,用了一个泛型。 多说一句,Class 是声明泛型时用的,class<?> 是定义用的,不一样。