service
public interface BaseService {
void work();
}
public interface ChildService extends BaseService{
}
public class ChildServiceImpl implements ChildService {
@Override
public void work() {
System.out.println("work");
}
}
controller
public class BaseController {
public void work(){
getService().work();
}
private BaseService getService() {
try{
Field[] fileds = this.getClass().getDeclaredFields();
for(Field field:fileds){
if(BaseService.class.isAssignableFrom(field.getType())){
field.setAccessible(true);
return (BaseService)field.get(this);
}
}
return null;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
}
public class ChildController extends BaseController{
private ChildService childService = new ChildServiceImpl();
public static void main(String[] args) {
ChildController controller = new ChildController();
controller.work();
}
}