Javaには不変型があります。メソッドに不変のオブジェクトを渡した場合、そのメソッドで値が変更されていても、そのメソッドを呼び出した後は変更されません。私はすべてのプリミティブが不変であることを知っています。 String
も変更できません。
私はJavaでその機能をチェックするための簡単なコードを書いており、プリミティブのラッパークラスも不変であるようです。誰もが不変の型をjavaでリストできますか?Javaのすべての不変型
1
A
答えて
4
いくつか新しいものを導入かなり確信しています
は不変ではありません。
void change(SomeType st) {
st.setValue(123);
}
は実際のものに変更されます。 While
void change(SomeType st) {
st = new SomeType(123);
}
はありません。ここでの違いは、参照を変更しているのか、参照されているオブジェクトを操作しているのかにあります。
文字列とそのラッパークラスは、そのオブジェクトを変更する可能性があるsetValue
のようなメンバー関数がまったくないため、不変と呼ばれます。
これをご理解いただきますようお願い申し上げます。疑問がある場合は、コメントして自由に尋ねることができます。
+0
私は理解しました、ありがとうございました。 – shift66
-1
jdkで提供されるプリミティブ値を保持する目的のクラスは、このリストを渡す必要があります。
例 - 整数、ロング、ダブル、ストリングなど。
1
いいえ、それは不可能です。
誰もが自分自身の不変のタイプを追加することができますし、私は、Javaの各異なるバージョンが、それの価値がその方法で変更された場合でも、そのメソッドを呼び出した後に変更されることはありません
関連する問題
- 1. 型の不一致:Javaコード
- 2. JAVA型の不一致エラージェネリック
- 3. 互換性のない型Guava不変のJavaユーティリティマップへのマップ
- 4. 不変型クラスのドキュメント/コメント
- 5. Javaメソッドのパラメータとして不明な型のオブジェクトを渡す
- 6. Java不正な型エラーの開始
- 7. Javaの:ジェネリック型の型の不一致構文エラー
- 8. のJavaのジェネリック:型の不一致:コードに続いて
- 9. 不変のクイックint型ですか? C++
- 10. Idの型は不変です
- 11. 変更可能な型と不変型のグラフ
- 12. のJava:整数不変
- 13. Java不変の文字列
- 14. C++の不明な変数型です。テンプレートを使うべきですか?
- 15. バイナリ%の不良オペランドの型、最初の型java.lang.Object第2型int(java)
- 16. コンパイル時に不明な型の不変型リストを作成する
- 17. C#で不特定の型の変数?
- 18. 不変型のコンストラクタの略語
- 19. Javaのすべての基本型のパラメータ?
- 20. 共変戻り型のJava型キャスト
- 21. のJavaジェネリック型変数配列型
- 22. Java - データ型の不一致を処理してプログラムを続行
- 23. 型付きラケットすべてに変換するすべて(a)
- 24. 不変型のコンストラクタでHashCodeを生成
- 25. 不平衡型データセットの変数作成
- 26. Javaの可変オブジェクトと不変オブジェクト
- 27. JavaマップをJavaコードのScala不変マップに変換する
- 28. Python-型オブジェクトを使用して変数の型を調べる
- 29. 不変型と変更可能なC#
- 30. Hadoop不変vsデータ型変更可能
プリミティブは不変ではありません。 「メソッドに渡した後も変化しない」という事実は、値が渡されているためであり、不変ではないからです。 – amit
類似した質問:http://stackoverflow.com/questions/5124012/examples-of-immutable-classes – Azodious
このリストを知る理由は何ですか? – Dapeng