JavaのBigIntegerクラスに、数値リテラルを取得できるコンストラクターがないのはなぜですか?[閉まっている]


8

JavaのBigIntegerクラスに、数値リテラルを取得できるコンストラクターがないのはなぜですか?私はBigIntegerを使用するたびに、そして多くの場合、それらについて単に考えているだけで、これは不思議に思います。

Javaの設計者は、存在するはずの1つの圧倒的な便利さにもかかわらず、1つを除外しなければならなかったのはなぜでしょうか。


toString整数型を簡単に呼び出すことができるので?そしてそうするためには、複数のオーバーロードが必要になります-整数型ごとに1つ。
2012年

1
数値リテラルは自動的にlongにキャストできるため、1つのコンストラクターがlongで十分だと思います。Javaでは、暗黙的に型をより正確な(効率的ではない、derp)型にキャストできます。浮動小数点型から作成したい人は、少なくともキャストする必要があるので、それは理にかなっていますが、私は、なぜ価値のある巨人を作りたい人に苦しんでいるのかわかりません3
Wug

@kevincline:文字列コンストラクタを削除すると言っているのではなく、なぜ長いコンストラクタがないのかと尋ねています。
Wug

回答:


19

答えは、JavaDocにありBigInteger.valueOf(long)ます。

この「静的ファクトリメソッド」はlong、頻繁に使用されるBigIntegerの再利用を可能にするため、()コンストラクタに優先して提供されます。

言い換えるとBigInteger.valueOf(long)、架空のBigInteger(long)コンストラクターに要求するとおりのことを正確に実行します。ただし、少し効率的である(または少なくとも可能性があります)。


3
優秀な。いくつかの貴重なインターネット担当者がいます。+1
ロバートハーヴェイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.