interface - Java Co-Variance -
for project want provide generic interface resemble workflow, like
public interface iworkflow { public void start(); public void dowork(); public void end(); }
for that, have lots of implementation, like
public class coffeeworkflow implements iworkflow { public void start() { // setup coffee // prepare dishes // ... } public void dowork() { // drink coffee } public void end() { // wash dishes } }
now want provide more information functions, like
public interface iworkflowstartargs {}
and especially:
public class coffeeworkflowstartargs implements iworkflowargs
to give method
public interface iworkflow { public void start(iworkflowstartargs args); public void dowork(); public void end(); }
respectivly:
public class coffeeworkflow implements iworkflow { public void start(coffeeworkflowstartargs args) { } }
but not work, not recognized implementation of interface.
should pass in iworkflowstartargs , cast inside?
is there better solution that?
you can define interface like
interface iworkflow<t extends iworkflowstartargs> { public void start(t args); public void dowork(); public void end(); }
and when create coffeeworkflow
can create like
class coffeeworkflow implements iworkflow<coffeeworkflowstartargs> { @override public void start(coffeeworkflowstartargs args) { // todo auto-generated method stub } @override public void dowork() { // todo auto-generated method stub } @override public void end() { // todo auto-generated method stub } }
Comments
Post a Comment