Java 转换泛型类型对象

Java 转换泛型类型对象,java,generics,Java,Generics,我在电视上遇到过这种类型的演员 for(WatchEvent事件:key.pollEvents()){ ... ... WatchEvent ev=(WatchEvent)事件; 我的理解是,由于事件引用泛型类型被定义为任何扩展对象,所以自解释为因为路径间接扩展了对象 但是我在java规范中搜索了关于转换泛型类型的任何规则,这些规则解释了上述情况和所有相关情况,但我没有找到任何东西 首先,我的解释是否正确? 第二,关于这个和类似的案例是否有任何参考资料或文件?你本质上是在问这个问题: Watc

我在电视上遇到过这种类型的演员

for(WatchEvent事件:key.pollEvents()){
...
...
WatchEvent ev=(WatchEvent)事件;
我的理解是,由于事件引用泛型类型被定义为任何扩展对象,所以自解释为因为路径间接扩展了对象

但是我在java规范中搜索了关于转换泛型类型的任何规则,这些规则解释了上述情况和所有相关情况,但我没有找到任何东西

首先,我的解释是否正确?
第二,关于这个和类似的案例是否有任何参考资料或文件?

你本质上是在问这个问题:

WatchEvent<?> event;
WatchEvent<Path> ev = (WatchEvent<Path>)event;
WatchEvent事件;
WatchEvent ev=(WatchEvent)事件;
这是一个不安全的演员阵容

轮询返回的对象是一个无界类型。程序员“知道”实际类型并(盲目地)进行了转换


有关更多详细信息,请参阅。

,因为
WatchEvent
不是
WatchEvent
的超类,而是
WatchEvent
(这可能被认为是
watchevent的简写形式。我不能告诉你哪部分对你来说没有意义,或者你的实际问题是什么。如果我没记错的话,强制转换是在运行时进行的,但泛型是在编译时进行的——这可以解释为什么你在JLS中找不到关于强制转换泛型的任何内容(如果我是对的话)…@takendarkk,从问题的标题可以明显看出,这是演员,我把它贴在了问题上,这是从一个WatchEvent事件到另一个WatchEvent事件。我可以看到那行代码,我不知道它的哪一部分让你感到困惑。考虑到
路径文件名,我不确定Java团队在编写演员阵容时是怎么想的=(路径)event.context();
是安全强制转换。
WatchEvent<?> event;
WatchEvent<Path> ev = (WatchEvent<Path>)event;