0

ラッパー クラスには、次のように使用されるInteger静的メソッドがあります。parseInt()

Integer.parseInt();

このように呼び出すことができるのは静的クラスのメソッドだけだと思いました(つまりClass.doMethod())。非静的クラスはすべて、そのメソッドを使用するためにオブジェクトをインスタンス化する必要があります。

私はAPIをチェックしましたが、どうやら静的ではないIntegerと宣言されているようです。public final Integer

4

4 に答える 4

7

どのクラスにも、staticと 非静的メソッドの両方を含めることができます。static独自のクラスを含む任意のクラスでメソッドを呼び出す場合、クラスのインスタンスをインスタンス化する必要はありませんMyClass.methodName()。クラス名を使用してメソッドを呼び出すだけです。

実際、次のようにしても機能します。

Integer nullInt = null;
nullInt.parseInt("5");

これは、メソッドを呼び出すときに参照のクラスstaticだけが重要であるためです。Integer.parseIntしかし、この貧弱なスタイルを考慮してください。代わりに常に eg を使用してください。

また、とにかく最上位クラスを宣言できないことに注意してくださいstatic。静的として宣言できるのは、ネストされた/内部クラスのみです。

于 2012-10-13T21:22:11.853 に答える
2

いいえ、あなたは間違っています。

このように呼び出すことができるのは静的メソッドのみですが、それらは「非静的」クラスに属している可能性があります。

于 2012-10-13T21:25:07.210 に答える
2

Java では、オブジェクトから静的メソッドを呼び出すことができますが、これは警告を生成するだけで、コンパイルは続行されます。非静的クラスは、すべてのインスタンスで共有される静的フィールドとメソッドを持つことができます (これが、VB.NET で「共有」が静的を意味する理由です)。したがって、オブジェクトから静的メンバーにアクセスすると、リーダーが混乱する可能性があるため、避ける必要があります。

于 2012-10-13T21:41:08.430 に答える
0

言い方をすると、AnIntegerは具体的なオブジェクトです。Integer多くの sを持つことができます。1つしかありませんInteger.MAX_VALUE

つまり、Integer具体的な s を持つものもあれば、どこにでも一度だけ存在する必要があるものもあります。

于 2012-10-13T21:25:08.330 に答える