2017-11-03 9 views
0

지금은 generic 클래스 BTree<T>의 인스턴스를 만들려고합니다. BTree<T> 클래스의 코드를 대량으로 삭제하고 생성자 만 남겨 두었습니다. 비록 그것이 필수적이라면 누구나 도움이된다고 생각하면 전체 코드를 추가 할 수 있습니다.Java : 추상 인터페이스를 구현하는 일반 클래스의 인스턴스를 만드는 방법은 무엇입니까?

내 자신의 클래스에서
package assignment2_draft; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Comparator; 
import java.util.Iterator; 
import java.util.List; 
import java.util.SortedSet; 
import java.util.TreeSet; 

public class BTree<T> implements SSet<T> { 

    //Some methods 

    public BTree(int b, Class<T> clz) { 
    this(b, new DefaultComparator<T>(), clz); 
    } 

} 

, 나는 BTree<T> 클래스를 호출하고 일반에 정수를 전달하려고 다음 BTree<T> 클래스는 다음과 같이 보인다. 수업 시간에 나는 다음과 같은 것을 가지고 있습니다 :

BTree<Integer> myTree=new BTree<Integer>(Integer.class); 

이전에 제네릭 클래스에서 작동했으나이 클래스는 아니 었습니다. 궁금 해서요, 매개 변수를 전달하고 있습니까? 당신이

SSet<Integer> tree = new BTree<Integer>(2, Integer.class); 

공지 사항 같은 것을해야 할 것 같다 또는 BTree<T>

+0

*** 추상 *** 인터페이스를 구현합니까? 인터페이스의 다른 종류와 반대로? [JLS §9.1.1.1] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.1.1.1) : *** 모든 ** 인터페이스는 암시 적입니다. 'abstract'. * – Andreas

답변

3

생성자 서명의 인스턴스를 만들 때 어떻게 든 SSet<T>를 참조 할 필요가 그래서 BTree(int, Class<T>)

되는 않는 것은 참조는 SSet<>입니다 BTree<> - 당신이 원하는 경우 BTree<> 참조를 사용할 수 있지만, 일반적으로 바람직하지 않은 경우가 아니면 program to an interface을 사용하는 것이 좋습니다. 위에서 제공

+0

글쎄, 당신이 구문에 훨씬 가깝습니다. 내 삭제 :) – nullpointer

0

생성자 수락이 개 값

public BTree(int b, Class<T> clz) { 
this(b, new DefaultComparator<T>(), clz); 
} 

하지만 당신은 단지 하나 제공하고,

BTree<Integer> myTree=new BTree<Integer>(Integer.class); 

다음 사용하지 않으면 다른 생성자가 수행합니까
int a=5; 
SSet<Integer> myTree=new BTree<Integer>(a,Integer.class);