小编Dor*_*ica的帖子

接口在Kotlin中的功能

我正在开发一个包含一些视图的android库。这些视图自然会发出事件。

我有一个名为的接口(仅出于此问题的目的)Listener。如果我用Java编写该库,则内容将如下所示:

public interface Listener {
    void onEvent();
}
Run Code Online (Sandbox Code Playgroud)
public class SomeView extends FrameLayout {
    // Some more functions and implementation details

    public void setListener(Listener l) { ... }
}
Run Code Online (Sandbox Code Playgroud)

在Kotlin活动中使用此视图时,可以这样使用setListener

someViewInstance.setListener {
    // implementation
}
Run Code Online (Sandbox Code Playgroud)

我想用Kotlin写我的库,但是它也可能用在Java代码中,所以我想像常规视图(如上图)一样为侦听器提供和接口,但是可以选择Kotlin代码使用该函数实施:

interface Listener {
    fun onEvent()
}
Run Code Online (Sandbox Code Playgroud)

当我尝试setListener在Kotlin测试活动中像上面那样使用时,出现编译错误,指出该函数需要类型Listener但得到了() -> Unit

有没有一种方法可以在Kotlin中启用这种实现而不必为此创建新功能?

我考虑过只接收一个函数,() -> Unit但是在Java代码(Function1等等)中看起来很奇怪。

谢谢!

android kotlin

13
推荐指数
2
解决办法
846
查看次数

JAVA签名对象 - 没有安装的提供程序支持此密钥:sun.security.rsa.RSAPrivateCrtKeyImpl

我想使用我使用密钥工具创建的一对RSA密钥创建一个文件并使用以下命令:

keytool -genkeypair -alias key -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 365 -keystore keystore.jks

我想初始化我的Signature对象,所以我尝试了这个:

PrivateKey privateKey = (PrivateKey) keyStore.getKey(PRIVATE_KEY_ALIAS,privateKeyPassword);
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initSign(privateKey);
Run Code Online (Sandbox Code Playgroud)

但我得到了这个例外:
No installed provider supports this key: sun.security.rsa.RSAPrivateCrtKeyImpl

感谢任何帮助!

java encryption digital-signature

7
推荐指数
1
解决办法
8001
查看次数

不要在Prolog中关心

有没有办法告诉Prolog列表中的元素可以是任何值?我尝试使用_但它没有用.我正在尝试比较两个零和一个列表,但在某些地方我并不关心这个值,例如:我想[1,1,1] == [1,1,_]返回true哪个_元素我不关心它的价值

prolog

1
推荐指数
1
解决办法
460
查看次数

标签 统计

android ×1

digital-signature ×1

encryption ×1

java ×1

kotlin ×1

prolog ×1