68386


Colorクラスを使って、オリジナルの色を作りたい場合は、Colorクラスで定義されているコンストラクタに引数を当てて作ると認識しています。（例 Color
a = new Color(230,55,90) ）  
一方で、Color a = new
Color(Color.BLUE）のように、引数に数字を書かずに、「Color.色」という形で既存の色を使って色を作る方法もあります。  
この、Color.BLUE ,Color.RED のようなやり方は、クラスにメソッドを実行しているということでしょうか？仕組みがよくわかりません。  
また、このような場合、Colorクラスのコンストラクタは使っていないということでしょうか？  
メソッドを使う場合は、「変数名.メソッド」のやり方が正しい、と認識しているので違和感を感じます。


CC BY-SA 4.0
2020-07-07T13:35:16.873
68376
2020-07-07T19:40:27.150
39688
question
java
Colorクラスのコンストラクタについて


Color.色は、Colorクラスで定義された定数です。メソッドではありません。  
すでに定義されているため、new Color(...)をしなくても使えます。

<https://docs.oracle.com/javase/jp/7/api/java/awt/Color.html>

(コンストラクタは1つではなく、引数が違うものを複数定義することが出来ます)


CC BY-SA 4.0
2020-07-07T19:30:27.563
68385
2020-07-07T19:30:27.563
40151
68376
answer


いわゆるvalue objectです。  
例えば青色として利用したいインスタンスは`new Color(0, 0,
255)`で一度作ってしまえばそれを使い回しても問題ないので、システムがあらかじめ作っておいて`Color.BLUE`として参照できるようになっています。

> Color.BLUE ,Color.RED のようなやり方は、クラスにメソッドを実行しているということでしょうか？

メソッド呼び出しではなく、`public`なフィールドの参照です。

> Colorクラスのコンストラクタは使っていないということでしょうか？

システムがコンストラクタを事前に呼んで生成しています(ので私達が使うタイミングでは意識しません)。


CC BY-SA 4.0
2020-07-07T19:40:27.150
68386
2020-07-07T19:40:27.150
2808
68376
answer