web-dev-qa-db-ja.com

クラスを返す方法-メソッドを入力します

クラスがあります

public class Engine {

    Double engineSize;
    public Engine(){
        this.engineSize = 1.0;
    }
    public Double getEngineSize() {

        return engineSize;
    }
}

私は別のクラスを持っています:

public class ModelT {

    public Engine getEngine() {

        return null;
    }}

今、私はこのテストに合格したいと思います:

@Test

public void shouldHaveTheCorrectEngineSize(){
    assertThat(modelT.getEngine().getEngineSize(), is(1.0));
}

メソッドでEngineタイプを返す方法が難しいので、いくつかの方法を試しましたが、Javaの初心者であるため、知識が限られています。これを行う方法を教えてください。そして、私がさらに読むことができる概念の名前は何ですか。

3
Tayyab

EngineのインスタンスをModeTクラスに保存する必要があります。

public class ModelT {

   private Engine eng;      
  ModelT( Engine eng){
       engine = eng;
  }

    public Engine getEngine() {

        return eng;
    }}

次に、メインで-Engineオブジェクトを作成し、modeltに渡します。

 Engine eng = new Engine();
  ModelT car = new Modelt(eng);
2
OldProgrammer

たぶん私はあなたの質問を理解していませんが、ModelTメソッドgetEngineでnullを返しているので、テストは決してokを返しません。

以下のコードで試してください:

public class ModelT {
    public Engine getEngine() {
        return new Engine();
    }
}
1
Toni Montero

あなたが達成しようとしていることを理解するのは少し難しいです。

Instanceofを調べて、Engineのクラスを取得できます。

継承と、クラスを関連付けることができるさまざまな方法を調べたいと思うかもしれません。

https://www.tutorialspoint.com/Java/java_inheritance.htm

0
SleepyFox89

あなたのgetterは、EngineクラスをModelTに関連付けると、より意味があります。 構成関係

public class ModelT {
    private Engine myEngine;
    //some setter, DI or Constructors here 
    public Engine getEngine() {

        return myEngine;
    }
}

ModelTクラスのpublic double getEngineSize()の値を返すにはどうすればよいですか??

あなたはどこかにあります:

ModelT foo = new ModelT();
Engine e = foo.getEngine();
double s = e.getEngineSize();

getEngine()メソッドでnullを返すため、このテストは決して合格しません。 nullgetEngineSize()を呼び出すと、NullPointerExceptionを受け取ります。

あなたはこのようなことをする必要があります:

public class ModelT {

    public Engine getEngine() {

        return new Engine();
    }
}

その後、Engineを使用できるようになります。

Javaの基本を学ぶ方法についての質問があるため、Oracleから直接 Java-Basics をお勧めします。

0
Christian