gpt4 book ai didi

java - 如何使用泛型参数扩展非静态类?

转载 作者:搜寻专家 更新时间:2023-11-01 03:09:23 24 4
gpt4 key购买 nike

在我的应用程序中,有这行代码引起了问题:

public class DisplayListing<R extends Listing<R, L>, L extends Listing<R, L>.Loader> extends SherlockListFragment { ... }

使用 Eclipse 一切正常。但是在切换到 IntelliJ IDEA 之后,错误出现了:

No enclosing instance of type 'com.app.Listing' is in scope.

此错误消息涉及 Listing<R, L>.Loader 部分(Loader 是一个非静态类)。

当我转到 IntelliJ 的首选项并将编译器从 Javac 更改为 Eclipse 时,我回到正题:应用程序将成功编译并再次运行。

但是指示错误的红色标记将保留(我想摆脱它)。所以我想知道我是否真的做错了什么,应该修复我的通用参数,或者依赖 Eclipse 编译器并忽略错误是否可以?

最佳答案

这是一个合理的错误,无需任何复杂的泛型即可重现:

public class Foo<T extends Bar.Baz> {}

class Bar {
class Baz {}
}

似乎 IntelliJ 解析器(不是它的编译器,它是 javacecj)将 extends Bar.Baz 误认为是是 Foo 声明的一部分,而不是 T。换句话说,这与您在执行此操作时(正确地)得到的错误相同:

public class Foo extends Bar.Baz {}

这是 IDEA Issue #94011 .您可以对该问题投赞成票,以给予更多关注。

关于java - 如何使用泛型参数扩展非静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com