java - 为什么我无法在 Java 中实例化扩展类的实例?

标签 java oop inheritance static extends

我想做的只是从 LinkedList 扩展一个类。这是我的代码:

  import java.util.*;

  class Test {

    public static void main( String [] args ) {

        OrderedLinkedList ol = new OrderedLinkedList();
    }

    public class OrderedLinkedList extends LinkedList<Integer> {

        public boolean add( Integer item ) {
            for (int i=0; i < size(); i++) {
                Integer itemOfList = get( i );
                if ( itemOfList.compareTo( item ) > 0 ) {
                    add( i, item );
                    break;
                }
            }
            return true;
        }
    }

}

但是,我收到以下消息的编译错误:

Test.java:7: non-static variable this cannot be referenced from a static context
        OrderedLinkedList ol = new OrderedLinkedList();
                               ^
1 error

我相信我没有引用任何东西,只是实例化。

最佳答案

内部类具有对其外部类的隐式引用,除非标记为静态。

您需要将内部类标记为静态以避免这种情况:

public static class OrderedLinkedList extends LinkedList<Integer> {

因此编译器提示内部类没有 Test 实例,因为 main 是静态方法。

关于java - 为什么我无法在 Java 中实例化扩展类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12947031/

相关文章:

Java:线程之间的通信仅限于一个方法

php - call_user_func_array 将参数传递给构造函数

java - 在 Java 中将对象从一个位置移动到另一个位置

Javascript - 理解 Object.create 和 Object.call(this)

java - 让 watij 运行

java - Spring Cache - 生成自定义缓存结果

java - 显示 DialogFragment 的应用程序在旋转后崩溃

python-3.x - 如何在 Python 3.7 中验证输入属性

inheritance - 如何在 TypeScript 中扩展宿主对象(例如错误)

javascript - String构造函数(String.__proto__)的原型(prototype)是什么?