Tag: Java

Kotlin lambda有几个参数

我有点困惑kotlin lambda表达。 找不到合适的答案。 在Java中,我可以用tho参数设置一个监听器: myObject.setListener(new MyListener() { @Override public boolean doSmth(int pos, int value) { switch(..) { …. } } }) 用lambda: myObject.setListener((p1, p2) -> { switch(..) { …. } }) 在Kotlin,我可以这样做: myObject.setListener{p1, p2 -> return@setListener false} 要么 myObject.setListener{{p1, p2 -> if (p1) { return@setListener true } else { return@setListener false } }} 但它真的很丑。 有没有办法做到这一点? […]

Kotlin接口的一个java类:意外覆盖

我有一个类的第三方Java库 public class ThirdParty { public String getX() { return null; } } 我也有一个类似kotlin的界面 interface XProvider { val x: String? } 现在我想扩展ThirdParty类并实现XProvider接口。 这一直在我遗留的java代码中工作正常: public class JavaChild extends ThirdParty implements XProvider {} 但是,我想写尽可能多的kotlin,并试图将我的java类转换为kotlin。 可悲的是,以下不起作用: class KotlinChild: ThirdParty(), XProvider 错误是 class 'KotlinChild1' must be declared abstract or implement abstract member public abstract val x: String? defined in […]

将RxJava代码正确转换为Kotlin

我正在学习Kotlin和RxJava。 我在Java中拥有这样的代码: public class MainActivity extends AppCompatActivity { private HashMap<String, Object> cacheToInsertToDb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cacheToInsertToDb = new HashMap<>(); Observable.interval(1, TimeUnit.SECONDS) .take(30) // up to 30 items .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Long>() { @Override public void accept(Long aLong) throws Exception { cacheToInsertToDb.put(aLong+"", aLong); Log.d("Observable", cacheToInsertToDb.values().toString()); } }, new Consumer<Throwable>() { @Override public […]

如何访问Kotlin中的“Activity.this”?

我有这样的Java代码: MaterialDialog builder = new MaterialDialog.Builder(MainActivity.this) 我想获取Kotlin中的MainActivity对象。 MainActivity.this自动转换。

如何在Kotlin中注入var?

我尝试将Dagger2实现到我的Kotlin项目中,但是@Inject注释存在问题。 在Java中看起来像这样,这工作正常: public class FooActivity extends Activity { @Inject @Named("accessTokenObservable") public Flowable<Optional<AccessToken>> accessTokenObservable; @Override protected void onCreate(@Nullable final Bundle savedInstanceState) { super.onCreate(savedInstanceState); App.getGraph().inject(this); } } 但是,我如何写Kotlin中的@Inject ? 当我使用这个: @Inject @Named("accessTokenObservable") var accessTokenObservable: Flowable<Optional<AccessToken>>? = null 我得到这个错误消息: Error:Dagger does not support injection into private fields 如果我使用lateinit : @Inject @Named("accessTokenObservable") lateinit var accessTokenObservable: Flowable<Optional<AccessToken>> 我得到这个错误消息: Error:Flowable<Optional<AccessToken>> cannot […]

Json给kotlin数据类

有没有现成的服务从json模型生成kotlin数据类的方式http://www.jsonschema2pojo.org/ site? 我的新项目已经超过了复杂的API响应,所以它会节省我的时间。

Kotlin Firebase反序列化

我试图从Kylin反序列化Firebase到POJO的数据,这是我的POJO类: class Message { var number: String ?= null var message: String? = null var timestamp: Long = 0L var isHandled: Boolean ?= false var type:String ?=null } 这是我从Firebase检索数据的代码 val query = Fire.REF.child("sms").orderByChild("type").equalTo("outbox-unsent") query.addChildEventListener(object : ChildEventListener { override fun onChildAdded(dataSnapshot: DataSnapshot, key: String) { val outbox = dataSnapshot.getValue(Message::class.java) Log.d("BS", "Background Service $outbox") } //…… }); […]

Kotlin – NoSuchMethodError实例化Throwable时

尝试实例化Throwable对象会引发以下错误 java.lang.NoSuchMethodError: No direct method <init>(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 我错过了一些非常明显的东西吗

与java和kotlin建设的Android应用程序

我使用核心Java构建了一个应用程序。 最近谷歌宣布主要语言为kotlin。 用kotlin创建更新的功能是不错的选择。 任何差异与执行时间或应用程序的大小,如果我有一些代码在java和一些代码在kotlin。 非常感谢

Kotlin扩展冲突

如果我有一个jar,在类路径上,我已经创建了一个扩展函数来说参数的String类,我有另一个jar在String上具有相同的扩展函数,Kotlin将如何解决这两个? 我认为,如果两个函数是在相同的包中定义,那么会有冲突? 但是,如果不同的包,我怎么能区分这两个扩展?