2

したがって、次のような関数を考えてみましょう:

public void setTemperature(double newTemperatureValue, TemperatureUnit unit)

ここで、TemperatureUnit は次のように定義されます。

public enum TemperatureUnit {celcius, kelvin, fahrenheit}

私は理想的にはこれに到達したいと思います:

setTemperature(23, celcius);

したがって、最終的には「TemperatureUnit」を省略したいと思います。このようにすると、関数は通常のテキストであるかのように読み取れるため、通常は列挙型の値の前にある部分です。

もちろん、これを達成するために静的インポートを行うことができますが、うまくいけば物事をきれいに保ちながら、それに代わるものがあるのではないかと思います。それらを宣言するインターフェイスを使用している人がいると聞いたことがありますが、これも悪い習慣と見なされています。

助言がありますか?

4

2 に答える 2

6

さて、あなたは 3 つの技術的な可能性をすべて挙げました。個人的には、enum クラスのフル ネームを使用することを好みますが、名前を変更して、より自然なコードを生成します。

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

コードの冗長性を減らすことだけを目的としている場合の1つの可能性は、次のような文字または文字列を受け取るオーバーロードを提供することです。

setTemp (23, "C");

私は弾丸を噛んで修飾名を使用しますが、この提案は私の意見では型システムの整合性を「損なう」ので、おそらく避けるべきです。

于 2012-05-04T23:05:20.100 に答える