Rohit:
私はクローン化されたリストを作成したいです。私は、コードスニペットの下に使用していますが、「コンストラクタを解決できません」と、私のIDEにもかかわらず、コンパイル・エラーを示しているMyClass
デフォルトコンストラクタを持っています。
List<MyClass> clonedList =
myClassList.stream().map(MyClass::new).collect(Collectors.toList());
私はストリームに新しいです、私の構文が間違っている場合は、私を助けてください。
彼らは次のとおりでした:
MyClass::new
あなたのクラスは、タイプの要素の型である単一のパラメータを取るコンストラクタを持っている場合のみ、このコンテキストで動作しますStream
。パラメータなしのコンストラクタは動作しません。
myClassList.stream().map(MyClass::new)...
振る舞います
myClassList.stream().map(e -> new MyClass(e))...
ためmyClassList
のリストであるMyClass
インスタンス、この手段は、次のシグネチャのコンストラクタが動作する方法参照のために必要とされるであろう- MyClass (MyClass other)
。
あなたはまだ、次のラムダ式とパラメータなしのコンストラクタを使用することができます。
myClassList.stream().map(e -> new MyClass())...
それは、元の要素を無視するので、もちろん、それは、ほとんど意味がありませんStream
。
あなたの目標はクローンすることですのでList
、あなたはコピーコンストラクタが必要になります。
public MyClass (MyClass other) {
// copy the properties of other to this instance
}