关于 Type接口和ParameterizedType接口之间强转的疑问~!

新手上路,请多包涵

看一个GenricDaoImpl代码时候存在一个疑问:

Java code?

1

2

3

4

5

6

7

8

9

10

public class GenricDaoImpl<T `extends Serializable, PK `extends Serializable>

implements GenricDao<T, PK> {

private Class<?> entityClass; `// 实体类的类型`

public GenricDaoImpl() {

entityClass = (Class<?>)((ParameterizedType) (`this`.getClass()

.getGenericSuperclass())).getActualTypeArguments()[`0`];

}

}

Java code?

1

2

Type type = `this`.getClass().getGenericSuperclass();

ParameterizedType parameterizedType = (ParameterizedType)type;

其中ParameterizedType接口是Type的子接口,Class类是Type实现类;

但是Class类并没有实现ParameterizedType接口,强转为什么没有报错;

Class类也没有重写getActualTypeArguments()方法;

我自写了一个类似的Demo,报了com.itany.C cannot be cast to com.itany.B,代码如下:

Java code?

1

2

3

4

5

6

7

8

9

interface A{}

interface `extends A{}`

class `implements A{}`

public class Main {

public static void main(String[] args) {

A a= `new C();`

B b=(B)a;

}

}

阅读 1.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题