Having a deep hierarchy you'll need to use something like TypeTools (which I authored):
class DeviceDao extends BaseDao<Device> {}Class<?> entityType = TypeResolver.resolveRawArgument(IBaseDao.clas, DeviceDao.class);assert entityType == Device.class;
Note: As always, type arguments can only be resolved at runtime if they're captured in a type definition. So subclassing BaseDao
is necessary.