File tree Expand file tree Collapse file tree 2 files changed +29
-72
lines changed
scijava-struct/src/main/java/org/scijava/struct Expand file tree Collapse file tree 2 files changed +29
-72
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff line change 3030package org .scijava .struct ;
3131
3232import java .util .Iterator ;
33+ import java .util .LinkedHashMap ;
3334import java .util .List ;
35+ import java .util .stream .Collectors ;
3436
3537/**
3638 * A structure consisting of typed fields called {@link Member}s.
@@ -48,6 +50,32 @@ default Iterator<Member<?>> iterator() {
4850 }
4951
5052 default <C > StructInstance <C > createInstance (final C object ) {
51- return new DefaultStructInstance <>(this , object );
53+ final LinkedHashMap <String , MemberInstance <?>> memberMap ;
54+ memberMap = new LinkedHashMap <>();
55+ for (final Member <?> member : members ()) {
56+ memberMap .put (member .getKey (), member .createInstance (object ));
57+ }
58+
59+ return new StructInstance <>() {
60+ @ Override
61+ public List <MemberInstance <?>> members () {
62+ return memberMap .values ().stream ().collect (Collectors .toList ());
63+ }
64+
65+ @ Override
66+ public Struct struct () {
67+ return Struct .this ;
68+ }
69+
70+ @ Override
71+ public C object () {
72+ return object ;
73+ }
74+
75+ @ Override
76+ public MemberInstance <?> member (final String key ) {
77+ return memberMap .get (key );
78+ }
79+ };
5280 }
5381}
You can’t perform that action at this time.
0 commit comments