当前位置: 首页 > 知识库问答 >
问题:

调用方法[已关闭]中的方法

巢权
2023-03-14

我必须实现一个名为createfromcelsius的方法(Factory-method),在这里我可以创建具有特定温度单位(摄氏度、开尔文...)的新对象。我还创建了将代码从一个单元转换为另一个单元的方法。问题是我不知道如何将covert-method连接到createfromcelsius方法。我试着让我的所有方法和变量abstact,以便我可以调用它们。问题是:如何在create-methods中实现convert-methods?

这是我的代码

public class Temperatur {

    private final float temp;

    /**
     * Static variable for kelvin
     */
    public static final float KELVIN_OFFSET = 273.15f;

    private Temperatur(float temp) {
        this.temp = temp;
    }

      private static Temperatur createfromCelsius(final float temp) {
          return createfromCelsius(temp);
      }
  
      private static Temperatur createfromFahrenheit(final float temp) {
          return createfromFahrenheit(temp);
      }

      private static Temperatur createfromKelvin(final float temp) {
        return createfromKelvin(temp);
    }

    /**
     * converts celsius into kelvin
     *
     * @return
     */
    public float celsiusToKelvin() {
        return (temp + KELVIN_OFFSET);
    }

    /**
     * converts celsius into fahrenheit
     *
     * @return
     */
    public float celsiusToFahrenheit() {
        return (temp * (9f / 5f) + 32f);
    }

    /**
     * converts kelvin into celsius
     *
     * @return
     */
    public float kelvinToCelsius() {
        return (temp - KELVIN_OFFSET);
    }

    /**
     * converts kelvin into fahrenheit
     *
     * @return
     */
    public float kelvinToFahrenheit() {
        return (((temp - KELVIN_OFFSET) * (9f / 5f)) + 32f);
    }

    /**
     * converts fahrenheit into celsius
     *
     * @return
     */
    public float fahrenheitToCelsius() {
        return (((temp - 32f) * (5f / 9f)));
    }

    /**
     * converts fahrenheit into kelvin
     *
     * @return
     */
    public float fahrenheitToKelvin() {
        return ((temp + 459.67f) * (5f / 9f));
    } 
}

共有1个答案

毕和志
2023-03-14

如前所述,abstract并不能满足您的需要

一个工厂会这样工作

private static Temperatur createfromCelsius(final float temp) {
    return new Temperatur(temp);
}

但是,您应该定义类中的temp字段应该是什么基本度量单位,而不是通过factory参数。例如,如果您想将所有内容转换为开尔文,那么看起来就像

private static Temperatur createfromCelsius(final float temp) {
    Temperatur t = new Temperatur(temp);  // or do the math directly here 
    t.temp = t.celsiusToKelvin();
    return t;
}

那么您只需要公共getter方法就可以从Kelvin进行单向转换

 类似资料:
  • 我试图了解继承在Java中是如何工作的。这是我的示例代码。 这工作正常。但是我无法理解,当我通过<代码>动物d=新狗()创建对象时;为什么我不能不调用类狗的方法<代码>树皮()?感谢所有的答案。

  • 假设我有一个类Things,它包含许多不同的实例变量。我为它们分别创建了单独的setter和getter方法。如果我想创建另一个存储things'class'的class2,那么为things类中的实例变量创建额外的setter和getter方法是很好的编码方法。另外,假设我有另一个使用class2的class3,那么重复setter和getter方法会产生高耦合吗?

  • 在Android Studio中评论Java方法时,我可以键入/**并生成带有方法参数和返回类型的javadoc。但这似乎对科特林不起作用。 有什么方法可以教你自动生成Kotlin KDoc格式的方法文档吗? 编辑:是的,这个问题和可能重复的问题是一样的,但我的问题不是“为什么?”,我知道KDoc有不同的格式。我的问题是,是否有一种方法可以在AS中为科特林做同样的事情?也许有办法添加/编辑这个模板

  • 这个问题是由打字错误或无法再复制的问题引起的。虽然类似的问题可能在这里讨论,但这一问题的解决方式不太可能帮助未来的读者。 我对java很陌生,试图编写一个简单的代码,包含main方法和另外两个方法(calcAverage和determineGrade)。我一直在试着让它工作,但是这两种方法都出错了 我尝试切换变量并切换方法的工作方式,但我什么也得不到。

  • 本文向大家介绍c# 调用Win32Api关闭当前应用的方法,包括了c# 调用Win32Api关闭当前应用的方法的使用技巧和注意事项,需要的朋友参考一下 Win32 API Win32 API即为Microsoft 32位平台的应用程序编程接口(Application Programming Interface)。所有在Win32平台上运行的应用程序都可以调用这些函数 使用Win32 API,应用程

  • 我有3个类:主要游戏,ufoMovement(实际上是一个线程)和ufo本身(是的,在图片中是德语,但他们只是名字)。UfoMovement创建了一个Ufo,它有一个叫做“爆炸”的方法,其中组件会飞离。主游戏开始线程UFOMovement。这个游戏是一个小行星躲避游戏,你的ufo正在飞行,你必须躲避小行星,这意味着我必须从main类调用方法:Explomde,因为那个类检查碰撞,但是当我调用mai