How to cast instance by classname in Spring's validator interface realization [closed]

心不动则不痛 提交于 2020-04-07 10:39:26

问题


I have class - AbstractOrder - it have basic realization and fields. And also i have three another which extends AbstractOrder - EmployeeOrder, StudentOrder, PostgraduateOrder, but have additional field - id. I would like to create a single validation class for all 3 entities. Here is my code. So, my question is "how to create an object of instance of nessasary class and cast object to it using Reflection api". My entities doesn't have a constructors. I try to something like that:

@Service
public class TripOrderValidator implements Validator {

  @Autowired
    private TripOrderService tripOrderService;

    Class <?> typeOfOrder;

    @Override
    public boolean supports(Class<?> aClass) {

        if (AbstractTripOrder.class.isAssignableFrom(aClass)) {
            typeOfOrder = aClass;
            return true;
        } else {
            return false;
        }
    }

    @Override
    public void validate(Object o, Errors errors) {

           Class<? extends AbstractTripOrder> tripOrder = (Class<? extends AbstractTripOrder>) typeOfOrder.cast(o);
//can't execute the method

//tripOrder.getNumber();
}

}

But i can't call the methods of the class. I want to use it like that. For example. In method support i have class EmployeeOrder. Then in validate method i create object and cast parameter o to that classType:

EmployeeOrder order = (EmployeeOrder) o;

来源:https://stackoverflow.com/questions/60898252/how-to-cast-instance-by-classname-in-springs-validator-interface-realization

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!