2017-12-13 4 views
-3

Javaのインタフェースは、変数/ジェネリック型を入力として使用できますか?私はこの質問にこだわっている

抽象データ型「myADTは」入力としてジェネリック型T1 とT2を受けます。

タイプT1の属性「x」、タイプT2の属性「y」を持っています( )。属性にアクセスしたり変更したりするためのgetメソッドとsetメソッドもあります。 のJavaインターフェイスとその関連実装クラスを抽象データ型 "myADT"に設定します。

私は入力T1とT2が混乱しています。クラスのようにインターフェースが入力できないと思ったのですか? これに答えるにはどうすればいいですか? は、ここで私は今のところ思い付いたものです:それは少しでも右だ場合、またはその完全に間違っ

public interface myADT{ 

    T1 X; 
    T2 Y; 

    public void setX(T1 X){ 
     X=X; 
    } 

    public void setY(T2 Y){ 
     Y=Y; 
    } 

    public void getX(){ 
     return x; 
    } 

    public void getY(){ 
     return Y; 
    } 

イムわからない場合。 誰かが私を助けることができれば、私は永遠に感謝するでしょう。 ありがとうございます!

+2

インターフェイスの場合、「属性」を持つことはできません。 –

+0

クラスのように、任意の数の型パラメータを受け入れることができます。あなたがクラスでやっているのと同じように、型パラメータとして 'T1'と' T2'を定義しようとします。あなたはそれが動作するのを見るでしょう。ただし、[Javaレッスンのインタフェース]の章(https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html)を参照してください。 –

+1

インスタンスの状態はありません。静的変数はすべてのインスタンスに適用できます。インスタンスごとに状態が必要な場合は、抽象クラスが必要です。 – duffymo

答えて

0

質問は確かに不明ですが、これは彼らが求めているようなものかもしれません。

public interface IADT<T1,T2>{ 
    public void setX(T1 x); 

    public void setY(T2 y); 

    public T1 getX(); 

    public T2 getY(); 
} 

public class ADT implements IADT<String,String> { 
    String x; 
    String y; 

    @Override 
    public void setX(String x) { 
     this.x = x; 
    } 

    @Override 
    public void setY(String y) { 
     this.y = y; 
    } 

    @Override 
    public String getX() { 
     return x; 
    } 

    @Override 
    public String getY() { 
     return y; 
    } 
} 
+0

あなたの返事をありがとう、それは事をもっとはっきりさせますが、質問はT1とT2がジェネリック型であると述べているので、それらは依然としてString型でしょうか? – Paul

+0

@Paul - これらはインターフェイスのジェネリック型ですが、実装では文字列です。 – OldCurmudgeon

関連する問題