わかりました、ここに私の問題があります:
インターフェースを含むリストList<Interface> a
と、そのインターフェースを拡張するインターフェースのリストがありますList<SubInterface> b
。設定したいa = b
。私addAll()
がやっていることはすでに非常にコストがかかるので、メモリを消費するようなものは使いたくありません。私は文字通り言うことができる必要がありますa = b
。私は試しましたList<? extends Interface> a
が、リストa
にインターフェイスを追加できません。サブインターフェイスのみです。助言がありますか?
私はこのようなことができるようになりたいです:
List<SubRecord> records = new ArrayList<SubRecord>();
//add things to records
recordKeeper.myList = records;
RecordKeeperクラスは、インターフェース(サブインターフェースではない)のリストを含むクラスです。
public class RecordKeeper{
public List<Record> myList;
}
だから、私の友人が見つけたかなり単純な解決策はこれでした:
recordKeeper.myList = (List<Record>)(List<? extends Record>)records;
これは私が理解しているように機能します。List<SubRecord>
はでありList<? extends Record>
、List<? extends Record>
はList<Record>
です。きれいではないかもしれませんが、それでも機能します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加