問題タブ [autoboxing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java オートボクシングが、オートボックス化された型のメソッドのメソッド呼び出しに拡張されないのはなぜですか?
プリミティブを文字列に変換したいのですが、試しました:
これはエラーで失敗します:
ここで、プリミティブは参照型ではない (つまり、オブジェクトではない) ため、メソッドを持つことができないことがわかりました。ただし、Java 5 では、オートボクシングとアンボクシングが導入されました (C# のように... C# では好きではありませんでしたが、それは重要ではありません)。したがって、オートボクシングでは、上記が myInt を Integer に変換してから toString() を呼び出すことを期待します。
さらに、私の記憶が間違っていない限り、C# ではそのような呼び出しが許可されていると思います。これは、Java の autoboxing/unboxing 仕様の残念な欠点にすぎないのでしょうか?それとも正当な理由があるのでしょうか?
java - これは本当に拡大対オートボクシングですか?
これは、Java仕様の欠点に関連して、別の質問への回答で見ました。
さらに欠点があり、これは微妙なトピックです。これをチェックしてください:
ここでは、コンパイラが自動ボクシングよりも拡張を選択するため、「long」が出力されます(自分でチェックしていません)。自動ボクシングを使用するときは注意するか、まったく使用しないでください。
これは実際にはオートボクシングではなく拡大の例であると確信していますか、それともまったく別のものですか?
i
私の最初のスキャンでは、オブジェクトではなくプリミティブとして宣言されていることに基づいて、出力が「長い」というステートメントに同意します。ただし、変更した場合
に
出力は「整数」を出力します
ここで実際に何が起こっているのですか?私はJava用のコンパイラ/バイトコードインタプリタについて何も知りません...
java - ユーザーランドのオートボクシング?
独自のクラスにオートボクシングを実装することは可能ですか?
私の例を説明するために、これは私が書きたいと思うかもしれないものです:
そして、これは内部でJavaが行うことです(私自身の定義によると、どこかで、どういうわけか):
それで、これはどういうわけか可能ですか、それともJVM機能のみですか?
java - オートボクシング用にコンパイラが生成するコードは何ですか?
Java コンパイラがプリミティブをラッパー クラスに自動ボックス化するとき、バックグラウンドで生成されるコードは何ですか? 私はそれが呼び出すと想像します:
- ラッパーの valueOf() メソッド
- ラッパーのコンストラクター
- 他の魔法?
java - オートボクシングがJavaで一部の呼び出しを曖昧にするのはなぜですか?
今日、自動ボクシングによってメソッドのオーバーロード解決が曖昧になることがあることに気付きました。最も単純な例は次のようです。
コンパイルすると、次のエラーが発生します。
このエラーの修正は簡単です: 明示的な自動ボクシングを使用するだけです:
期待どおりに最初のオーバーロードを正しく呼び出します。
では、なぜオーバーロードの解決に失敗したのでしょうか? コンパイラが最初の引数を自動ボックス化せず、2 番目の引数を正常に受け入れなかったのはなぜですか? 自動ボクシングを明示的に要求する必要があったのはなぜですか?
java - Java: オートボクシングとキャストの違いは何ですか?
この質問は、「オートボクシングが Java で一部の呼び出しを曖昧にするのはなぜですか?」に関するものです。
しかし、回答を読んでみると、キャスティングに関する言及が数多くあり、その違いを完全に理解しているかどうかはわかりません。
誰かが簡単な説明を提供できますか?
java - Java: プリミティブ データ型の配列が自動ボックス化されない
私はこのような方法を持っています:
char
ここで、 forを使用してこのメソッドを呼び出そうとしますT
:
これはうまくいきません。char
andがandchar[]
に自動ボックス化されることを期待していますが、それは起こらないようです。Character
Character[]
洞察はありますか?
java - オートボクシング: だから私は書くことができます: Integer i = 0; 代わりに: Integer i = new Integer(0);
オートボクシングは、私が書くことができるという事実に帰着するようです:
それ以外の:
したがって、コンパイラはプリミティブをオブジェクトに自動的に変換できます。
それがアイデアですか?何でこれが大切ですか?
java - 整数値の比較
私は初心者のJavaコーダーであり、整数クラスの変数を読み取るだけで、APIで3つの異なる方法で記述できます。私は次のコードを持っています:
これはループ内にあり、出力するだけout_table
です。
私の目標は、整数の値かどうかを確認する方法を理解することですcount > 0
。
私count.compare(0)
はそれが正しい方法だと思いますか?それともそれcount.equals(0)
ですか?
私はcount == 0
が間違っていることを知っています。これは正しいですか?値比較演算子はありcount=0
ますか?
java - int[] を List に変換する方法Javaで?
Javaに変換int[]
するにはどうすればよいですか?List<Integer>
もちろん、アイテムごとにループで行う以外の答えにも興味があります。しかし、他に答えがない場合は、この機能が Java の一部ではないという事実を示すために、その答えを最良のものとして選びます。