java中的条件方法链接或调用自定义方法
我正在看EclipseJGit库。它应该能够同时进行SSH和HTTPS连接,并且每次进行推送、克隆等操作时都需要提供SSH会话或用户凭据。但我不知道在使用方法链接时如何进行java中的条件方法链接或调用自定义方法,java,method-chaining,Java,Method Chaining,我正在看EclipseJGit库。它应该能够同时进行SSH和HTTPS连接,并且每次进行推送、克隆等操作时都需要提供SSH会话或用户凭据。但我不知道在使用方法链接时如何进行 if (isSSH(repository)) { call = git .push() .setTransportConfigCallback(transport -> { SshTransport sshTransport
if (isSSH(repository)) {
call = git
.push()
.setTransportConfigCallback(transport -> {
SshTransport sshTransport = (SshTransport) transport;
sshTransport.setSshSessionFactory(getSshSession(repository));
})
.setPushAll()
.call();
}
else {
call = git
.push()
.setCredentialsProvider(prepareCredentialsProvider(repository))
.setPushAll()
.call();
}
是否可以通过设置条件或使用自定义的“prepareConnection”方法替换setTransportConfigCallback和setCredentialsProvider来简化它
setTransportConfigCallback和setCredentialsProvider都位于此类中:
public abstract class TransportCommand<C extends GitCommand, T> extends
GitCommand<T> {
public C setTransportConfigCallback(
final TransportConfigCallback transportConfigCallback) {
this.transportConfigCallback = transportConfigCallback;
return self();
}
public C setCredentialsProvider(
final CredentialsProvider credentialsProvider) {
this.credentialsProvider = credentialsProvider;
return self();
}
...
它可以这样使用:
Iterable<PushResult> call = ((PushCommand) prepareConnection(git.push(), repository))
.setPushAll()
.call();
Iterable调用=((PushCommand)prepareConnection(git.push(),repository))
.setPushAll()
.call();
Imo它看起来没那么糟糕。我想您可以尝试在if/else之外提取重复的部分?
Iterable<PushResult> call = ((PushCommand) prepareConnection(git.push(), repository))
.setPushAll()
.call();