如何在方法中返回类类型

3
我有一个类。
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的初学者,所以我的知识有限。请问您能告诉我该如何解决这个问题吗?还有,有哪些相关概念可以供我进一步阅读和学习呢?

为什么 getEngine 返回一个空对象?你不能对其进行任何方法调用。 - Murat Karagöz
我不太确定如何回答你的问题。通过返回一个引擎类型对象,你可以返回一个引擎类型(对象)。就像在 getEngineSize 中返回 Double 一样,在 getEngine 中返回 Engine 也是同样的道理。 - tnw
我现在将其保留为一个问题,即如何在此处返回Engine的类型而不是null,并通过此方法获取getEngineSize的值并将其作为Engine对象返回... 我是一个初学者,这对我来说非常令人困惑... - Tayyab
如果你在这方面遇到困难,我强烈建议不要从使用JUnit开始,而是通过学习一些教程来入门。例如:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/ - Christian
@tnw 但是如何通过'getEngine()'获取'getEngineSize()'的值并将其作为引擎类型返回? - Tayyab
5个回答

2
您需要在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);

2
也许我没有理解你的问题,但是你的测试永远不会返回“ok”,因为在你的ModelT方法中的getEngine方法中你返回了null。
尝试使用以下代码:
public class ModelT {
    public Engine getEngine() {
        return new Engine();
    }
}

1
这个测试永远不会通过,因为你在getEngine()方法中返回了null。如果你在null上调用getEngineSize(),你将会收到一个NullPointerException
你需要做类似于下面的操作:
public class ModelT {

    public Engine getEngine() {

        return new Engine();
    }
}

然后,您就可以使用您的Engine了。

由于您关于如何学习Java基础知识的问题,我建议您直接访问Oracle的Java-Basics


在ModelT类中,我该如何返回public double getEngineSize()的值? - Tayyab
你必须明白,getEngineSize返回的是Engine的一个属性。所以你的Engine已经知道了大小。因此,你可以将返回类型从Engine更改为Double,因为EngineSize是一个double。 - Christian
如果我这样做,我会在测试中失败,因为测试显示出现了以下错误:方法getEngineSize()对于类型Double未定义。 - Tayyab

0

0

如果您将Engine类与ModelT相关联,即使用组合关系,那么您的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();

我该如何在ModelT类中返回public double getEngineSize()的值? - Tayyab
@Tayyab 我已经更新了答案...你有一个ModelT类的对象,里面有一个Engine和一个double...所以你可以调用getter方法直到获取到那个值 :) - ΦXocę 웃 Пepeúpa ツ
public Engine getEngine() { ModelT foo = new ModelT(); Engine e = foo.getEngine(); double s = e.getEngineSize(); return s; } - Tayyab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接