如何返回类 - 在方法中键入

时间:2017-07-20 14:23:55

标签: java class methods junit return-type

我有一个班级

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的初学者。你能告诉我怎么能这样做?什么是我可以进一步阅读的概念的名称..

5 个答案:

答案 0 :(得分:1)

您需要在ModeT类中存储Engine实例:

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

答案 1 :(得分:1)

也许我不理解你的问题,但你的测试永远不会返回,因为在你的ModelT方法getEngine中你返回一个null ..

尝试使用以下代码:

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

答案 2 :(得分:0)

看到你想要达到的目标有点难。

您可以查看instanceof以获取Engine类。

您可能希望了解继承以及可以将类关联起来的各种方法。

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

答案 3 :(得分:0)

如果您将Engine课程与ModelT相关联,那么 getter 会更有意义 并通过关联我的意思是使用Composition relationship

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

        return myEngine;
    }
}
  

我怎样才能返回public double getEngineSize()的值    class ModelT ??

你有一个地方:

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

答案 4 :(得分:0)

此测试永远不会通过,因为您在null方法中返回getEngine()。 如果您在getEngineSize()上致电null,您将收到NullPointerException

你需要做这样的事情:

public class ModelT {

    public Engine getEngine() {

        return new Engine();
    }
}

然后您就可以使用Engine

由于您对如何学习Java基础知识有所了解,我建议您直接使用Oracle的Java-Basics