Tag: 科特林

在Kotlin中调用Java静态方法的可能性

假设我们有一个Java静态方法: //Java code public static void printFoo() { System.out.println(“foo”); } 在Kotlin中可以调用这个方法吗?

如何获得给定密封类的所有子类?

最近,我们把枚举类的一个升级为了对象作为子类的密封类,所以我们可以做另一个抽象层来简化代码。 然而,我们不能再通过Enum.values()函数获得所有可能的子类,这是不好的,因为我们严重依赖于这个function。 有没有办法通过reflection或其他工具检索这些信息? PS:手动添加到arrays是不可接受的 。 目前有45个,并计划增加更多。 这就是我们的密封课程的样子: sealed class State object StateA: State() object StateB: State() object StateC: State() ….// 42 more 如果有一个值集合,它将是这样的形状: val VALUES = setOf(StateA, StateB, StateC, StateC, StateD, StateE, StateF, StateG, StateH, StateI, StateJ, StateK, StateL, …… 当然,没有人想要维护这样一个怪物。

Kotlin – NoSuchMethodError实例化Throwable时

尝试实例化Throwable对象会引发以下错误 java.lang.NoSuchMethodError: No direct method (Ljava/lang/String;Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V in class Ljava/lang/Throwable; or its super classes (declaration of ‘java.lang.Throwable’ appears in /system/framework/core-libart.jar) 我尝试的不同方式是: val s = Throwable() val t = Throwable(“This is a message”) 我观察到的一些事情(在Mac上使用Android Studio): 在Java类中,“Command + click”ing Throwable将我带到java.lang.Throwable而从Kotlin类中,我带到了Throwable中的Throwable定义 我尝试使用val s = java.lang.Throwable()但它甚至不会编译 我正在使用Kotlin版本1.0.0-beta-2423 我错过了一些非常明显的东西吗

为什么在一个mutableList上的.map实际上并没有改变Kotlin中List的值?

这就是我所拥有的,我想达到的目标: 我有一个类有一个mutableList作为一个字段。 我想find列表中的一个特定的元素,并改变它。 这是我迄今为止所尝试的: 这是我希望能够工作的function语句,在我将它放入扩展函数之后: fun Classroom.setNewParameters(id: String, modifiedName: String) { this.students.filter { l -> l.id == id } .map { l -> l.name = modifiedName } .toList() } 但是这个函数被调用后,列表中的students似乎没有变化。 我用下面的代码find了一个“丑陋的”解决方案: fun Classroom.setNewParameters(id: String, modifiedName: String) { for (l : Student in this.students) { if (l.id == id) { l.name = modifiedName break } } […]

在Kotlin嵌套注释

在Java中,可以创建如下所示的嵌套注释: public @interface InnerInnotation { String value(); } public @interface OuterAnnotation { InnerAnnotation[] value() default { @InnerAnnotation(“Hello”), @InnerAnnotation(“World”) } } annotation class InnerAnnotation(val value: String) 但是当我试图在Kotlin中做同样的事情时,我得到一个编译错误: annotation class OuterAnnotation( // Next line doesn’t compile: “Annotation class cannot be instantiated” val value: Array = arrayOf(InnerAnnotation(“Test”)) ) 但是,单个实例注记字段正常工作: annotation class OuterAnnotation( val value: InnerAnnotation = InnerAnnotation(“Hello World”) […]

如何在Kotlin中实现一个java SAM接口?

在Java中,可以像这样编写代码: model.getObservableProduct().observe(this, new Observer() { @Override public void onChanged(@Nullable ProductEntity productEntity) { model.setProduct(productEntity); } }); 然而,试图在Kotlin中覆盖本地函数的结果是: 问题:可以重写Kotlin中的本地函数吗?

Android:由于:MenuPopup,在此上下文中无法访问typesMenuPopup

我想从我自己的包名称空间访问MenuPopup实例。 我不知道这个错误,我是tiro 🙁 … PopupMenu文件 码: class XMenuPopup { // …. internal val mPopup: MenuPopupHelper // … fun show() { // Error notice is here // Type MenuPopup is inaccessible in this context due to: MenuPopup mPopup.popup } }

导入和锯齿实践

目前在Leiva的“Android开发者Kotlin”一书中,有一件事是我想知道的… import blah.data.Forecast import blah.domain.Forecast as ModelForecast 为什么要在每个数据和领域层创建一个“预测”类,然后别名? 为什么不简单地命名一个域名blah.domain.ModelForecast开始? 我通常尽量避免在自己的项目中使用相同的名称,即使这些类确实发生在不同的包中。 从不这样做,我有什么好处?

没有提供足够的数据给HAL,预期的位置

我在Android Studio中遇到了这个错误。 我只是想按下按钮时打印文本。 我得到下面的错误,每当我按下按钮时出现。 如果我取消注释意图,它也可以很好地工作,但更多的代码我有更多的错误更改。 我不确定这是真正的错误。 我这样说是因为我有一个完整的应用程序(不是这个),它使用翻新和github API来搜索回购。 这个按钮是搜索的纽带。 如果我拼写一个单词的应用程序完美的作品。 我终于到了这个简化的应用程序,试图find根本原因。 请帮忙。 1。 10-17 15:33:56.569 1404-1431/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 2045606 , only wrote 1793520 这是代码 import android.content.Intent import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.EditText class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val editText […]

通过枚举类属性Kotlin进行过滤

如何过滤kotlin中的枚举类? (只是学习)在下面的代码中,文件前面定义的枚举类是PayStatus {PAID,UNPAID}。 fun nextRentDate(): LocalDate? { return rentPaymentSchedule. filter { it.value.paymentStatus is PayStatus.UNPAID}. minBy { it.value.date.toEpochDay() }?.value?.date } 我得到的错误:Kotlin:不兼容的types:PayStatus.UNPAID和枚举