Java 如何使用构造函数初始化内部类的新字段?

Java 如何使用构造函数初始化内部类的新字段?,java,initialization,inner-classes,Java,Initialization,Inner Classes,如果我有这个类,并且我想初始化一个类型为Element的新字段, 我怎么能做到 public class MyLinkedList{ protected Element head, tail; public final class Element{ Object data; int priority; Element next; Element(Object obj, int priorit, Element element){

如果我有这个类,并且我想初始化一个类型为
Element
的新字段, 我怎么能做到

public class MyLinkedList{

   protected Element head, tail;

   public final class Element{
      Object data;
      int priority; 
      Element next;

      Element(Object obj, int priorit, Element element){
       data = obj;
       priority = priorit;
       next = element;
      }
   }
}
当我尝试这样做时,它给了我一个错误

public class PriorityTest{
    public static void main(String[]args){  
        MyLinkedList.Element e1 = new MyLinkedList.Element("any", 4, null); 
    }
}

使内部钙保持静止

public class MyLinkedList{

   protected Element head, tail;

   public static final class Element{
      Object data;
      int priority;
      Element next;

      Element(Object obj, int priorit, Element element){
       data = obj;
       priority = priorit;
       next = element;
      }
   }

  public static void main(String[]args){
      MyLinkedList.Element e1 = new MyLinkedList.Element("any", 4, null);
  }
}
试试这个

MyLinkedList.Element e1 = new MyLinkedList().new Element("any", 4, null);

您的内部类不是静态的,因此您需要首先创建外部类的对象。

由于内部类不是静态的,内部类的实例不能单独存在。如果这是您想要的,请声明内部类static。非常感谢,但是当我尝试编译它时,它显示了以下错误:错误:包含MyLinkedList.Element的封闭实例需要MyLinkedList.Element e1=new MyLinkedList.Element(新字符串(“任意”),4,null);或者,如果元素类不需要引用列表的
head
tail
,则将其设置为静态类而不是内部类。