簡體   English   中英

如何返回類 - 在方法中鍵入

[英]How to return class - type in a method

我上課了

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

我有困難如何在方法中返回引擎類型,我嘗試了幾種方法,但知識有限,因為我是java的初學者。你能告訴我怎么能這樣做? 什么是我可以進一步閱讀的概念的名稱..

您需要在ModeT類中存儲Engine實例:

public class ModelT {

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

    public Engine getEngine() {

        return eng;
    }}

然后在你Main - 創建一個Engine對象並傳入modelt:

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

也許我不理解你的問題,但你的測試永遠不會返回ok,因為在你的ModelT方法getEngine中你返回一個null。

試試以下代碼:

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

有點難以看到你想要實現的目標。

您可以查看instanceof以獲取Engine類。

您可能希望了解繼承以及可以關聯類的各種方法。

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

如果您將Engine類與ModelT相關聯並且通過關聯我的意思是使用Composition關系,那么您的getter將更有意義

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 如果在null上調用getEngineSize() ,則會收到NullPointerException

你需要做這樣的事情:

public class ModelT {

    public Engine getEngine() {

        return new Engine();
    }
}

然后您就可以使用您的Engine

由於您對如何學習Java基礎知識的探討,我建議您直接使用Oracle的Java-Basics

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM