How can I make this java generic cast ?
public interface IField { } class Field implements IField { // package private class } public class Form { private List<Field> fields; public List<IField> getFields() { return this.fields; } }
The return statement throws a compiler error (I know the reason – I read the generics tutorial) but it would be very handy to write such code.
If I declared ‘fields’ as List I would need to use a lot of casts to Field in other methods of a Form class .
Can I force that damn compiler to bend it’s rules and compile that return statement ?
Thanks in advance.
A better solution, IMO, is to change the signature of your method to use a bounded wildcard:
This will let the caller treat anything coming ‘out’ of the list as an IField, but it won’t let the caller add anything into the list (without casting or warnings), as they don’t know what the ‘real’ type of the list is.