java generics and SuppressWarnings -
i have classes
abstract class { //.... } class b extends { //.... } class c extends { //.... }
then have
interface maker<t extends a> { someclass make(t obj); }
implementations maker class
class makerforb implements maker<b> { /*... */ } class makerforc implements maker<c> { /*... */ }
and class factory 1 static method
class factory { public static someclass makesomeclass(a obj) { maker maker = null; if(obj instanceof b) maker = new makerforb(); /* ... */ return maker.make(obj); } }
in case warning maker raw type, when declare maker way
maker<?> maker = null;
i exception (make not applicable arguments a) on
return maker.make(obj);
what best way rid of these warnings without using
@suppresswarnings("unchecked")
get rid of generics on maker
- don't need it:
interface maker { someclass make(a obj); } class makerforb implements maker { someclass make(a obj); }
or if still want use it, go unsafe cast or suppresswarnings
.
to understand why error if try defining:
maker<? extends a> maker = null;
imagine case when (by accident) maker = new makerforc()
, , try applying b
.
Comments
Post a Comment