[英]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類。
您可能希望了解繼承以及可以關聯類的各種方法。
如果您將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.