java - Method nonvisibility of same instanceof but differing class -
i have below:
item var;
depending on user input, initialized different class:
if (/*user input*/ == 1) { var = new item(); } else { var = new truck(); }
the classes defined as:
public class truck extends item { public void somemethod(); public void exclusivemethod(); } public class item { public void somemethod(); }
note truck
has exclusive method, exclusivemethod()
item
not have. depending on conditions, series of methods called on var
:
// return true if var initialized truck if (/*conditions*/) { var.somemethod(); var.exclusivemethod(); } else { var.somemethod(); }
netbeans pops error exclusivemethod()
cannot found because not in item
. need method visibility of exclusivemethod()
when var
initialized truck
. have constraints, though: item var;
must in code before other logic, , cannot create interface implement in both item
, truck
. cannot modify public class item{}
@ all.
what can do?
you can use reflection apis call exclusivemethod
.
the code -
method m = var.getclass().getmethod("exclusivemethod", null); if(m != null) { m.invoke(var, null); }
you can more information relfection apis here - http://docs.oracle.com/javase/tutorial/reflect/index.html
another way casting var
onto truck
, if sure var object of type truck
. example code -
if(var instanceof truck) { ((truck)var).exclusivemethod() }
Comments
Post a Comment