2 bo go rozumiem od ręki i nie muszę się wczytywać w to co robisz w IFie (inicjalizacja).
technicznie można by też od biedy zrobić tak by Oval
miał metodę contains
, która by pozwoliła na zmianę zapisu na:
for (Vector v : vectors) {
Oval vectorDot = new Oval(v, 10);
if (vectorDot.contains(clickPoint.invertY(300)))
// something
}
co w dalszej kolejności pozwoliło by na stworzenie konstrukcji:
for (Vector v : vectors) {
Oval vectorDot = new Oval(v, 10);
vectorDot.whenContains(clickPoint.invertY(300), doSth);
}
z której możemy usunąć zmienną
for (Vector v : vectors) {
Oval.of(v, 10).whenContains(clickPoint.invertY(300), doSth);
}
i na koniec święta trójca map
, filter
, forEach
:
vectors
.map(v->Oval.of(v, 10)) // to można zastąpić Oval::of10, gdy of10 = Oval.of(v, 10)
.filter(ov -> ov.contains(clickPoint.invertY(300))) // clickPoint.invertY(300) - ja bym to wyciągnął do jakiejś zmiennej
.forEach(doSth);
W efekcie masz kod, który opisuje co chcesz wykonać z kolekcją, a szczegółami wykonania zajmuje się język.