是否存在省略静态类型声明的“干净”方法?

时间:2012-05-04 22:59:55

标签: java

所以考虑这样的函数:

public void setTemperature(double newTemperatureValue, TemperatureUnit unit)

其中TemperatureUnit定义为:

public enum TemperatureUnit {celcius, kelvin, fahrenheit}

我理想地想要达到这个目的:

setTemperature(23, celcius);

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

现在我可以做一个静态导入来完成这个,但是我想知道是否有其他选择,希望同时保持清洁。我听说有人使用声明它们的界面,但这也被认为是不好的做法。

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

嗯,你已经列出了所有3种技术可能性。就个人而言,我赞成使用枚举类的全名,但重命名它以产生更自然的声音代码:

public enum Degrees{CELSIUS, KELVIN, FAHRENHEIT}

答案 1 :(得分:1)

如果你的意图只是让你的代码更简洁,那么一种可能性就是提供一个带有字符或字符串的重载,如:

setTemp (23, "C");

虽然我只是咬紧牙关并使用合格的名字 - 这个建议在我看来“损害”了类型系统的完整性,应该可以避免。