でオブジェクトを作成しているときにLinkedListメソッドにアクセスできないList obj = new LinkedList()
LinkedList
メソッドにアクセスできないのはなぜですか?List参照型オブジェクト
0
A
答えて
2
はList
です。 LinkedList
を「格納」しましたが、List
と扱っています。あなたが使用して、リストの種類を知っているLinkedList
1
0
原因コンパイラdoesntのように扱うことができ
LinkedList obj = new LinkedList()
、実行時型識別を持つように - :で一方
、インターフェイスメソッドのみを使用できます。リストはインターフェイス
0
あなたのコードはList(インターフェイス)型の変数を作成します。
obj変数を参照する他のコードでは、obj変数を使用して参照されるすべてのオブジェクトがListインターフェイスを実装するとしか想定できません。
objが参照するオブジェクトがリンクリストであることをアサートするには、objをLinkedListにキャストする必要があります。これは、インターフェイス実装者がリンクリストであることを前提にしています。
一般的に、インターフェイスなどの抽象概念を使ってプログラムを作成するのが得意ですが、生の型によって提供されるメソッドにアクセスする必要がある場合は、生の型(この場合はLinkedList)への参照を使用するか、必要なメソッドを提供するList以外のインタフェース
LinkedList<String> myLinkedList = new LinkedList<>();
public void expectsList(List<String> maybeLinkedList){
maybeLinkedList.listInterfaceMethod(); // works ok
LinkedList linkedList = (LinkedList<String>) maybeLinkedList; // CAST may fail if obj is not a linked list
linkedList.linkedListMethod(); // If cast worked, this works
}
public void expectsLinkedList(LinkedList<String> aLinkedList){
aList.listInterfaceMethod(); // Works because linked list honors the List interface
List<String> list = aLinkedList; // also works because Linked list 'is a' kind of List
list.listInterfaceMethod(); // works ok
linkedList.linkedListMethod(); // We know the input object is a linked list
}
キャストは変更するタイプを説明するためのものであり、この場合は問題を解決するためにキャストする必要はありません。
関連する問題
- 1. オブジェクト型と参照型の違い
- 2. 参照型はオブジェクトですか?
- 3. のNullPointerException:int型android.support.v4.app.FragmentManagerImpl.mCurState nullオブジェクト参照
- 4. オブジェクト型による参照Java
- 5. オブジェクト参照型(Dynamic Binding)の問題?
- 6. 参照型のオブジェクトを投稿する
- 7. Enumerable.Repeat参照型オブジェクトの初期化
- 8. 参照型を参照型以外の参照型に変換する
- 9. 多型参照
- 10. オブジェクト参照変数の型が参照するオブジェクトの型と異なるJavaのメカニズムがありますか?
- 11. 値型と参照型
- 12. .NETの参照型
- 13. 参照クラス型を
- 14. アンマーシャルJSON参照型
- 15. 参照型メンバーを持つC#参照型
- 16. 派生参照型へのC#参照型のクローニング
- 17. C++オブジェクト参照
- 18. オブジェクト参照が
- 19. オブジェクト参照が
- 20. オブジェクト参照コンパイルエラー
- 21. Java:元のオブジェクト参照を含むオブジェクト内のオブジェクト参照
- 22. HQLのnull参照オブジェクトの参照プロパティ
- 23. オプションのオブジェクト参照
- 24. オブジェクト参照がレイザー
- 25. Location.getLongitude()nullオブジェクト参照
- 26. SVN2Gitオブジェクト参照エラー
- 27. 「nullオブジェクト参照」エラー
- 28. bottomNavigation:ReselectedListener:nullのオブジェクト参照
- 29. SSIS - インクリメンタルロード - 参照オブジェクト
- 30. コールバックメソッドのオブジェクト参照
であるため、 'LinkedList'はスーパータイプ' List'に隠されています。 – matoni
特定の 'LinkedList'メソッドが必要な場合は、' LinkedList obj = new LinkedList <>() 'を使用してください。 –
aUserHimself