如何在异步方法中检查无效的输入大小写



我正在做一个项目,在这个项目中,我应该使我的客户端程序synchronousasynchronous行为。所以我创建了一个接口(IClient),它有两种方法,一种是getUserSync用于同步行为,另一种是getUserAsync用于异步行为。

下面是我的客户端程序,它实现了我的接口(IClient) -

public class RedClient implements IClient {
    ExecutorService executor = Executors.newFixedThreadPool(5);
    @Override
    public RedResponse getUserSync(RedKey rdKeys) {
        // How to handle this case in getUserAsync method?
        if (RedUtils.isEmpty(rdKeys)) {
            return new RedResponse(null, RedClientError.INVALID_INPUT, RDClientStatus.ERROR);
        }
        RedResponse response = null;
        Future<RedResponse> handle = getHandle(rdKeys);
            try {
                response = handle.get(rdKeys.getTimeout(), TimeUnit.MILLISECONDS);
            } catch (TimeoutException e) {
                response = new RedResponse(null, RedClientError.TIMEOUT, RDClientStatus.ERROR);
            } catch (Exception e) {
                response = new RedResponse(null, RedClientError.ERROR, RDClientStatus.ERROR);
            }
            return response;
    }
    @Override
    public Future<RedResponse> getUserAsync(RedKey rdKeys) {
        // How to handle empty input keys case here just as I have handle it 
        // in getUserSync method
        return getHandle(rdKeys);
    }
    private Future<RedResponse> getHandle(RedKey beInput) {
        RedClientTask redClientTask = null;
        Future<RedResponse> future = null;
            try {
            RedClientTask = new RedClientTask(beInput);
            future = executor.submit(redClientTask);
            } catch (InterruptedException e) {
            }
        }
    return future;
    }
}

现在,客户可以根据要求调用getUserSyncgetUserAsync方法。因此,在getUserSync方法调用的情况下,如果他们传递空输入键,那么我正在做出响应,该无效输入已传递并将其返回。

现在如何在getUserAsync方法中做同样的事情,因为该方法只返回 Future,所以我不确定这将如何解决?

在这两种情况下都抛出一个IllegalArgumentException;这就是它的用途。

public Future<RedResponse> getUserAsync(RedKey rdKeys)  {
    if (RedUtils.isEmpty(rdKeys)) { 
        throw new IllegalArgumentException("rdKeys can not be empty");
    }
    ...
}

可是。。。我不明白问题是什么。您正在返回Future<RedResponse>...这是一个包含RedResponse的未来.在 getUserSync 方法中,您使用RedResponse来指示无效输入。

最新更新