2

所以考虑这样的函数:

public void setTemperature(double newTemperatureValue, TemperatureUnit unit)

其中 TemperatureUnit 定义为:

public enum TemperatureUnit {celcius, kelvin, fahrenheit}

理想情况下,我想达到的是:

setTemperature(23, celcius);

所以最终我想省略'TemperatureUnit'。通常在枚举值之前的部分,因为通过这种方式,函数读起来更像是常规文本。

现在我当然可以做一个静态导入来完成这个,但我想知道是否有替代方案,希望同时还能保持清洁。我听说有人使用声明它们的接口,但这也被认为是不好的做法。

有什么建议么?

4

2 回答 2

6

好吧,您已经列出了所有 3 种技术可能性。就个人而言,我更喜欢使用枚举类的全名,但重命名它以产生更自然的代码:

public enum Degrees{CELSIUS, KELVIN, FAHRENHEIT}
于 2012-05-04T23:04:04.773 回答
1

如果您的目的只是让您的代码不那么冗长,那么一种可能性是提供一个采用字符或字符串的重载,例如:

setTemp (23, "C");

尽管我只是硬着头皮使用限定名称——在我看来,这个建议“损害”了类型系统的完整性,应该避免。

于 2012-05-04T23:05:20.100 回答