为什么实现接口的泛型类不需要构造函数?

时间:2015-12-29 13:37:43

标签: java generics interface

以下是我演讲中的示例代码,它使用另一个类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;} 
}

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;
}

最后是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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

这与泛型无关,当你没有定义构造函数时,Java会为你提供一个带有以下签名的文件,

public YourClass(){
}

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

答案 2 :(得分:0)

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

public ClassName(){
}

答案 3 :(得分:0)

public class YourClass {


}

假设这是编译器创建的创建类(在运行时) 一个默认的构造函数,所以基本上在代码中定义它并不是必需的

希望它有所帮助:D