2016-03-30 20 views
1

私は現在、バイナリツリーを持つプロジェクトに取り組んでおり、ツリーを出力するためのコードはリポジトリから取得されています。戻り値型インターフェイス

私のコードにインターフェイスを実装することができれば、私は希望のフォーマットでプリントアウトします。

ただし、これらのうちの1つでは、インターフェイスクラスの異常な復帰が必要です。 (下記参照)

@Override 
public IBT getLeft() { 

    return null; 
} 

これは、IBTがバイナリツリーインターフェイスである場合に左のサブツリーを取得する方法です。

これは私が作っているより簡単ですか?

返品の手助けは?

+3

インターフェイスを実装するクラスからオブジェクトを返す必要があります。 –

答えて

2

メソッドgetLeftは、(インタフェースであれば)IBTを実装するクラス、またはIBT(クラスの場合)を継承するクラスを返すことができます。


たとえば、 FizzBuzz、私はインターフェイスFoo、および2つの実装を持っていると言う:

public interface Foo { } 

public class Fizz implements Foo {} 
public class Buzz implements Foo {} 

彼らはFooインタフェースを実装しているためFizzBuzzクラスは今Fooの代わりに使用することができます。

今私はFooオブジェクトを返す必要があるメソッドがあると言う。

public interface Bar { 
    Foo getFoo(); 
    Foo getAnotherFoo(); 
} 

それはクラスではありませんので、あなたは直接Fooオブジェクトを作成することはできません。ただし、代わりにFizzBuzzクラスを使用できます。

public class BarImpl implements Bar { 
    @Override 
    public Foo getFoo() { 
     return new Fizz(); 
    } 
    @Override 
    public Foo getAnotherFoo() { 
     return new Buzz(); 
    } 
} 
+0

私の問題を解決するために管理された、私の悲しみを引き起こすものは、私のBTのノードはバイナリツリーのサブクラスでした。私は2人をそれぞれのクラスに分けて、すべてが良かった。 ありがとうございました – ReuyJ

+0

@ReuyJうまくいっていることを聞いてうれしいです:) – flakes

0
interface Foo{void display();} 

public class TestFoo implements Foo 
{void display(){System.out.println(“Hello World”);} 

public static void main(String[] args){Foo foo = new TestFoo();foo.display();}} 

私は、これは便利だと思います。

+0

'TestFoo#display'は' public'にする必要があります。そうしないと弱いアクセス権限を割り当てるときにコンパイルエラーが発生します。 '@ Override'アノテーションも使用する必要があります – flakes