Tag: 科特林

Java中的Kotlin内部类可公开显示

我正在Kotlin开发一个Android 加密库 。 我有一些在Java应用程序中公开可见的internal类。 在文件中find这个 。 internal声明在Java中public 。 internal类的成员通过名称修改,使它更难以从Java意外使用它们,并允许根据Kotlin规则相同签名的成员不能相互看到的成员超载; 有没有办法解决这个问题?

在Kotlin中使用@ClassRule

在JUnit中,您可以使用@ClassRule来注释一个静态字段。 我怎么能在Kotlin做到这一点? 我试过了: object companion { @ClassRule @JvmStatic val managedMongoDb = … } and object companion { @ClassRule @JvmField val managedMongoDb = … } 但没有最后的作品,因为规则没有执行。 我再次检查完全相同的规则工作正常,没有静态上下文: @Rule @JvmField val managedMongoDb = …

Kotlin – 如何在ViewPager中添加OnPageChangeListener

我是新的kotlin,我怎样才能在ViewPager中添加OnPageChangeListener 。 viewPager?.addOnPageChangeListener // Now how can I add listener to it.

Kotlin lateinit记者java

你好,当我使用Kotlin来编程Android我已经看到在代码中的lateinit 。 java中的等价物是什么?我怎么把这个代码从Kotlin改成Java? public class MyTest { lateinit var subject: TestSubject }

Kotlin中的有什么不同?

下面的测试课,通过。 class SimpleClassTest { private inline fun anyObject(): T { return Mockito.anyObject() } lateinit var simpleObject: SimpleClass @Mock lateinit var injectedObject: InjectedClass @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun testSimpleFunction() { simpleObject = SimpleClass(injectedObject) simpleObject.simpleFunction() verify(injectedObject).settingDependentObject(anyObject()) } } 但如果我们改变 private inline fun anyObject(): T { return Mockito.anyObject() } 至 private inline fun anyObject(): T […]

在kotlin中正常类和数据类之间有什么区别?

我试图在任务6(DataClass)解决Kotlin Koan 。 当我在代码中使用正常的类时,测试用例变成失败。 这是我的数据类的代码: data class Person(val name: String, val age: Int) fun task6(): List { return listOf(Person(“Alice”, 29), Person(“Bob”, 31)) } 这是数据类的结果: [Person(name=Alice, age=29), Person(name=Bob, age=31)] 这是我的普通类的代码: class Person(val name: String, val age: Int) fun task6(): List { return listOf(Person(“Alice”, 29), Person(“Bob”, 31)) } 这是普通class级的成绩: [i_introduction._6_Data_Classes.Person@4f47d241, i_introduction._6_Data_Classes.Person@4c3e4790] 这意味着在kotlin中正常的类和数据类之间是有区别的。 那是什么? 更新 : 感谢@Mallow,你是对的。 那工作: […]

我可以使用lambda的名称作为“括号外”传递的参数吗?

我可以在括号外写一个lambdaexpression式,但是我不能把它放在名字旁边。 我尝试了很多方法: val plus3: (Int,Int,Int)->Int = {a,b,c->a+b+c} println(apply3(1,2,3){a,b,c->a+b+c}) // OK println(apply3(1,2,3){plus3}) // Type mismatch. Required: Int, Found: (Int,Int,Int)->Int println(apply3(1,2,3){(plus3)}) // Type mismatch. Required: Int, Found: (Int,Int,Int)->Int println(apply3(1,2,3)plus3) // unresolved reference println(apply3(1,2,3){plus3()}) // value captured in a closure println(apply3(1,2,3){(plus3)()}) // value captured in a closure 在那里放置一个名字的语法是什么(在括号之外)? 我不知道为什么,但在文档中没有关于主题的文字。 它说,我们可以把lambda放在那里,但不是关于表示lambda的variables或常量。

Kotlin:对象与同伴对象之间的区别

kotlin中的一个对象和同伴对象之间有什么区别? 例: class MyClass { object Holder { //something } companion object { //something } } 如果包含的参数/方法与它的类紧密相关,我已经阅读过,应该使用伴随对象。 但是为什么还有在class上宣布一个正常的对象的可能性呢? 因为它的行为完全像伴侣,但它必须有一个名字。 在它的“静态”(我来自Java方面)生命周期中可能有不同吗?

Kotlin覆盖Java setter

我用这个方法实现一个java接口(Command): void setInputStream(InputStream in); 我想用Kotlin制定者来覆盖这个: class ProxyCommand : Command { lateinit var _inputStream: ChannelPipedInputStream var inputStream: InputStream get() = this._inputStream set(value) { // This should override it. this._inputStream = (value as ChannelPipedInputStream) } } 但是我得到这个错误在set(value) : Accidental override: The following declarations have the same JVM signature (setInputStream(Ljava/io/InputStream;)V): public final fun (value: InputStream): Unit defined in […]

为什么可以在子types的重载成员函数中省略默认值?

正如在标题中所述:为什么可以在子types的重载成员函数中省略默认值? 这是正常的还是预期的? interface Foo { fun bar(parameter: Int = 1) } class Baz : Foo { override fun bar(parameter: Int) { // OK println(parameter) } } val baz = Baz() baz.bar() // OK baz.bar(2) // OK 在Foo是一个类的情况下也是同样的行为。