I have the following generic interface/classes
public interface AnInterface <T>{
T convertToY();
String getName();
String getLastName();
}
public class Foo implements AnInterface<Foo>{
// some methods specific to Foo
}
public class Bar implements AnInterface<Bar>{
// some methods specific to Bar
}
I created a generic method as follows (I didn't think it would work but it does)
public static <T> List<Person> getPersons(AnInterface<T> in) {
System.out.println(map.get(in));
List<Person> list = new ArrayList<>();
if (in instanceof Foo) {
Person p = new Person(in.getName(), in.getLastName());
p.setId(((Foo) in).getId());
list.add(p);
}
else if(in instanceof Bar) {
Person p = new Person(in.getName(), in.getLastName());
p.setCC(((Bar) in).getCC());
list.add(p);
}
return list;
}
The issue is that I did not create the classes so I am not sure if doing public class Foo implements AnInterface<Foo>
is something usual or not.
So what I am interested in is if there is any issue with the generic method and using instanceof
and if there is any problems that can be created. E.g. if I recall correctly we can't use instanceof
on collections so I was wondering if I might make it easy to introduce some other bug with this approach.
Note:. I can't modify AnInterface
or Foo
or Bar
Aucun commentaire:
Enregistrer un commentaire