我想将我的一些代码重写为 Kotlin。我首先粘贴了工作代码以显示来源。
我试过了
以下是用 Java 编写的工作摘录:
Function1.class(框架的一部分):
public interface Function1<T1, R> {
R call(T1 var1);
}
Authmanager.class:
public boolean isAuthed() {
Boolean isAuthed = getWithAuthPolicyManager(
authPolicyManager -> authPolicyManager.getBoolean(IS_AUTHED)
);
if (isAuthed != null) {
return isAuthed;
} else {
return false;
}
}
public <T> T getWithAuthPolicyManager(@NonNull Function1<AuthManager, T> function) {
Objects.requireNonNull(function);
synchronized (AUTH_POLICY_LOCK) {
try {
openAuthPolicyManager();
return function.call(authPolicyManager);
} catch (OpenFailureException | EncryptionError e) {
LOGGER.error("Error:", e);
return null;
} finally {
authPolicyManager.close();
}
}
}
我想将它重写为 Kotlin,但我不能:
Authmanager.kt
fun isAuthed(): Boolean {
val isAuthed =
getWithAuthPolicyManager<Boolean>({
authPolicyManager -> authPolicyManager.getBoolean(IS_AUTHED)
})
return isAuthed ?: false
}
fun <T> getWithAuthPolicyManager(function: Function1<AuthManager, T>) : T? {
synchronized (AUTH_POLICY_LOCK) {
return try {
openAuthPolicyManager();
return function.call(authPolicyManager);
} catch (OpenFailureException | EncryptionError e) {
LOGGER.error("Error", e);
null;
} finally {
authPolicyManager.close();
null
}
}
}
实际上,我只是将 Java 代码复制粘贴到 Kotlin 类以自动转换为 Kotlin。但是,linter 说:
Type mismatch.
Required: Function1<AuthManager, Boolean>
Found: (AuthManager) -> Boolean!
到这一getWithAuthPolicyManager<Boolean>({authPolicyManager -> authPolicyManager.getBoolean(IS_AUTHED)})行fun isAuthed()。
你知道如何解决这个问题吗?