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