Java 为什么实现接口的泛型类不';你不需要构造器吗?

Java 为什么实现接口的泛型类不';你不需要构造器吗?,java,generics,interface,Java,Generics,Interface,下面是我讲座中的示例代码,它们使用另一个类ListNode定义了一个名为BasicLinkedList类的泛型类 我确实理解接口不需要构造函数,但为什么作为实现接口的类的BasicLinkedList也不需要构造函数呢 下面是ListNode类的代码: class ListNode<E> { protected E element; protected ListNode<E> next; public ListNode(E item) {element =

下面是我讲座中的示例代码,它们使用另一个类ListNode定义了一个名为BasicLinkedList类的泛型类

我确实理解接口不需要构造函数,但为什么作为实现接口的类的BasicLinkedList也不需要构造函数呢

下面是ListNode类的代码:

class ListNode<E> {
  protected E element;
  protected ListNode<E> next;

  public ListNode(E item) {element = item; next = null;}
  public ListNode(E item, ListNode <E> n) {element = item; next = n;}

  public ListNode<E> getNext() {return this.next;}

  public E getElement() {return this.element;} 
}
类列表节点{
受保护的E元素;
受保护的ListNode下一步;
公共ListNode(E项){element=item;next=null;}
公共ListNode(E项,ListNode n){element=item;next=n;}
public ListNode getNext(){返回this.next;}
public E getElement(){返回this.element;}
}
LinkedListInterface的代码:

import java.util.*;

public interface LinkedListInterface<E> {
  public boolean isEmpty();
  public int size();
  public E getFirst() throws NoSuchElementException;
  public boolean contains(E item);
  public void addFirst(E item);
  public E removeFirst() throws NoSuchElementException;
  public void print() throws NoSuchElementException;
}
import java.util.*;
公共接口LinkedListInterface{
公共布尔值为空();
公共整数大小();
public E getFirst()抛出NoTouchElementException;
公共布尔包含(E项);
第一项(E项)的公共文件;
public E removeFirst()抛出NoTouchElementException;
public void print()抛出NoTouchElementException;
}
最后,BasicLinkedList的代码:

import java.util.*;
class BasicLinkedList<E> implements LinkedListInterface<E> {
  protected ListNode <E> head = null;
  protected int num_nodes = 0;

  public boolean isEmpty() {return (num_nodes == 0); }
...//other methods
import java.util.*;
类BasicLinkedList实现LinkedListInterface{
受保护的ListNode头=null;
受保护的int num_节点=0;
公共布尔值isEmpty(){return(num_nodes==0);}
…//其他方法

您不必为类提供任何构造函数,但在执行此操作时必须小心。编译器会自动为没有构造函数的任何类提供无参数默认构造函数。

这与泛型无关,当您不定义构造函数时,Java将为您提供一个带有以下签名的构造函数

public YourClass(){
}

一旦定义了自己的构造函数,默认构造函数就会消失。

当没有定义构造函数时,JAVA隐式地提供了一个没有参数的默认构造函数

public ClassName(){
}
假设这是编译器创建的类(在运行时) 默认构造函数,因此基本上不需要在代码中定义它


希望有帮助:D

没有类必须在代码中编写构造函数。如果找不到构造函数,编译器将添加一个默认构造函数。是否有一些特定的东西使您认为它们是必需的?
BasicLinkedList
有一个默认构造函数
public class YourClass {


}