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

Java泛型:非静态类型变量T不能从静态上下文中引用

范承望
2023-03-14
问题内容
interface A<T> {

    interface B {
       // Results in non-static type variable T cannot
       // be referenced from a static context
       T foo(); 
    }

}

反正这周围吗?为什么从AB引用T时T被视为静态的?


问题答案:

接口的所有成员字段默认publicstaticfinal

由于内部接口是static默认设置,因此您不能T从静态字段或方法中进行引用。

因为T实际上是与类的实例相关联,所以如果它与与类相关联的静态字段或方法相关联,那么它将毫无意义。



 类似资料:
  • 问题内容: 运行Demo类将在SomeClass中调用静态方法newInstance来调用构造函数并打印问候 定义方法将包括返回类型+方法名称以及参数 newInstance的返回类型是 SomeClass 在我看来很奇怪,因为我的班级叫做SomeClass 而不是 SomeClass 为什么在SomeClass 前面需要 ?看来,如果我不包含它,将会出现一个常见错误,称为“无法对非静态类型T进行

  • 我是Android编码的n00b,今天我想尝试使用定位服务。 我设置了一个简单的类和一个简单的main,只是为了得到经度和纬度。 但当我尝试调用retrive的构造时,long and latitude Android Studio弹出了一个错误: 错误:(33,16)错误:无法从静态上下文引用非静态变量纬度 这是我的位置班

  • 我编写了以下测试代码: 但会出现以下错误: 我如何让我的方法识别我的类变量?

  • 问题内容: 我是Java新手,我正在尝试通过递归函数部署斐波那契跟踪,然后计算运行时间。这是我设法编写的代码: 问题是,当我尝试将其转换为字节码时,出现以下错误: 我想知道是什么问题?! 问题答案: 更改 至 并使该方法静态。 或者,改变 至

  • 错误来自此行板状态 addme = 新板状态(); 由于某种原因,它所指向的非静态变量是“新”的。我不清楚如何修复这个错误,因为new不应该是一个变量,也不是。 查看stackoverflow记录,该错误通常来自非静态方法,通常通过将该方法设为静态或完全绕过该方法来解决。T 下面的代码是为了引用这个语句前后发生的事情。 }……

  • 问题内容: 我在使我的应用程序正常工作时遇到了一些麻烦。 我得到了 我确实收到了错误: 但是我解决了这个问题,因为我需要定义。 这是我的代码: 问题答案: 您的“主要”方法被认为是静态的,因此它只能访问静态对象,请尝试将object1声明为静态: 编辑:如果您需要2个对象,则这样做没有任何危害: 不要混淆静态字段和静态类(例如Singleton)。在此上下文中,静态(静态Object object