当前位置: 首页 > 面试题库 >

javac错误:具有泛型的不可转换类型?

岳杜吟
2023-03-14
问题内容

还有其他一些SO问题在讨论可以使用Eclipse的编译器而不是javac进行泛型编译的问题(即Java:泛型在Eclipse和javac中处理不同,而泛型可以在Eclipse中编译和运行,但不能在javac中编译)-但这看起来就像一个稍微不同的人。

我有一enum堂课:

public class LogEvent {
   public enum Type {
       // ... values here ...
   }
   ...
}

我还有一个带有方法的类,该方法接受来自Enum以下类型的任意对象:

@Override public <E extends Enum<E>> void postEvent(
    Context context, E code, Object additionalData) 
{
    if (code instanceof LogEvent.Type)
    {
        LogEvent.Type scode = (LogEvent.Type)code;
    ...

这在Eclipse中可以正常工作,但是当我使用进行了干净的构建时ant,我遇到了一对错误,一个错误instanceof在线,另一个错误在强制转换线:

443: inconvertible types
    [javac] found   : E
    [javac] required: mypackage.LogEvent.Type
    [javac]         if (code instanceof LogEvent.Type)
    [javac]             ^

445: inconvertible types
    [javac] found   : E
    [javac] required: com.dekaresearch.tools.espdf.LogEvent.Type
    [javac]             LogEvent.Type scode = (LogEvent.Type)code;
    [javac]                                                  ^

为什么会发生这种情况,如何解决这个问题以便正确编译呢?


问题答案:

我不知道为什么会这样,但是解决方法很简单:

@Override public <E extends Enum<E>> void postEvent(
    Context context, E code, Object additionalData) 
{
    Object tmp = code;
    if (tmp instanceof LogEvent.Type)
    {
        LogEvent.Type scode = (LogEvent.Type)tmp;
    ...

很难看,但是可以用…



 类似资料:
  • 我目前正在遵循一个教程,该教程正在使用。代码是这样的 但visual studio代码给了我以下错误: 类型“EventEmitter”不是泛型 应为0个类型参数,但得到1个 即使在angular网站上,代码看起来也是正确的。 我目前正在使用Angular CLI:1.7.4;节点:8.11.1;打字稿:2.8.1

  • 问题内容: 所以我有一张地图: 我会像这样添加元素: 我有如下通用方法: 现在,这段代码可以很好地工作,并且没有编译器问题: 但是,当我尝试这样做时: 编译器向我显示以下警告:类型安全:通用方法verifyType(String,Class)的未经检查的调用verifyType(String,Class) 这让我感到困惑…请帮助… 问题答案: 更改: 至 通过仅将类型声明为“ Class”,就失去

  • 问题内容: 我正在编写一些Swift代码,其中有一个包含通用类型的数组: 稍后在我的代码中,我需要确定存储在数组中的类型。我尝试使用文档中描述的类型转换技术(尽管泛型没有使用过)。 上面的switch语句在编译时导致以下错误: 发出IR SIL功能@ _TFC19Adder_Example Mac6Matrix9transposeUS 7ElementfGS0_Q__FT_GSqGS0_Q___以

  • 我正在尝试用来自spring WebFlux的WebClient制作一个客户端库。 服务器返回如下JSON所示的响应: 结果字段包含元素数组,这些元素可以根据使用的API而不同。 有关该API的更多信息,请参阅ServiceNow产品中的表API。 正如您在文档中所看到的,API路径如下所示:GET/now/table/{tableName},其中tableName可以是不同的值,tipology

  • 问题内容: 我试图实现一个排序和未排序的数组列表。两者都扩展了一个名为AbstractArrayMyList的类,其中包含常见的操作/实现- toString,clear等。 这是我的AbstractArrayMyList代码(它实现了我定义的通用接口) 我选择对elementData进行保护,以便可以对已排序和未排序的专用数组列表进行访问并对其执行操作。这是我的排序数组列表的声明/代码 所有这些

  • 我在抽象课上有以下内容... 还有另一个类,它继承了这个类... 当我从主类执行以下调用时,我收到一个错误... 我的问题是..为什么会发生这种情况?我的getEntityById不是返回T型的东西,在这种情况下应该是产品吗? 我在 Netbeans 中工作,编译时未显示任何错误。 感谢您的帮助=)