如何为接口中的属性指定@Throws

我目前正在将一些Java RMI代码移植到Kotlin。 Java中的传统接口是: interface Foo: Remote { Bar getBar() throws RemoteException } 在运行自动迁移工具之后,字段bar被更改为一个属性: interface Foo: Remote { val bar: Bar } 但是,在迁移的程序中, getBar不再被标记为throws RemoteException ,这将导致在RMI调用中illegal remote method encountered错误。 我想知道是否有任何方式来标记@Throws的财产?

升级到编译sdk版本后,findViewById出现错误

升级到编译SDK版本26后,所有findViewById显示错误: 没有足够的信息来推断有趣的参数T findViewById(id:Int):T!

Kotlin的视图绑定扩展在65k方法限制之后停止工作

达到65k方法限制后,Kotlin的视图绑定扩展停止工作,并在引用视图时抛出NullPointerException。 我试图安装MultiDex,但没有解决问题。 我正在使用Android API 25,不使用ProGuard并编译调试风格。 我能做什么? 这是一个错误的例子 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.jj.pos, PID: 5906 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jj.pos/com.jj.pos.features.authentication.LoginActivity}: java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.widget.TextView.setText(java.lang.CharSequence)’ on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) […]

Java / Android / Kotlin:关于私人领域的反思和调用公共方法

是否可以使用reflection来访问对象的私人领域,并调用该领域的公共方法? 即 class Hello { private World word } class World { public BlaBlaBla foo() } Hello h = new Hello() World world = reflect on the h // And then world.foo()

如何从kotlin的匿名类实现中更改全局variables

fun loadTweets(uid: Int) : Observable<ArrayList> { var tweets: ArrayList = ArrayList() val builder: Retrofit.Builder = Retrofit.Builder() .baseUrl(NetworkContract.SERVER_URL) .addConverterFactory(GsonConverterFactory.create()) val retrofit: Retrofit = builder.build() val userService: UserService = retrofit.create(UserService::class.java) val call: Call<List> = userService.loadTweets(uid) call.enqueue(object: Callback<List>{ override fun onResponse(call: Call<List>?, response: Response<List>?) { if(response!!.isSuccessful){ val tweetsTemp: ArrayList = ArrayList() tweetsTemp.add(Tweet(“Test!”, “Tom”)) mTweets = tweetsTemp } } […]

使用Kotlin无法反序列化Gson的JSON(仅适用于Android KitKat,可能更低)

正如标题描述我试图反序列化一些JSON这样做: val jsonResponse = ApiClientLive().get(“events/” + id.toString() + “.json”) val event = GsonBuilder().create().fromJson(jsonResponse, Event::class.java) // course1.name!!.compareTo(course2.name!!, ignoreCase = true) } 这只会在Android KitKat,Api级别19运行时崩溃,这是崩溃消息:(19是我支持的最低,所以我不知道更低的api水平) onError() java.lang.RuntimeException: Unable to invoke no-args constructor for class …event.models.Event. Registering an InstanceCreator with Gson for this type may fix this problem. at com.google.gson.internal.ConstructorConstructor$14.construct(ConstructorConstructor.java:226) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:210) at com.google.gson.Gson.fromJson(Gson.java:888) at com.google.gson.Gson.fromJson(Gson.java:853) at com.google.gson.Gson.fromJson(Gson.java:802) at […]

当使用kotlin找不到文件时,如何从URL.readText()中获取错误

当我的手机上没有互联网,或者当这个URL不存在时,这个方法没有做任何事情,既不会崩溃也不会停止搜索。 我试过这个: doAsync{ val json:String json = try { URL(“http://10.0.2.2:8888/bac/orient.php?ort=1”).readText() }catch (e: IOException){ e.printStackTrace() “” } uiThread{toast(json)} }

Android Kotlin如何在多选列表视图中选中checkbox

我有一个多选列表视图。 我想检查一些checkbox,但不是全部。 我正在尝试下面的代码,但不知道从哪里去,或者如果这是一个开始。 val listView = findViewById(R.id.mylist_listview) val values = arrayOf(“One”, “Two”, “Three”) val list = ArrayList() for (i in values.indices) { list.add(values[i]) } val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, list) listView.setAdapter(adapter) val cntChoice = listView.getCount() for (i in 0 until cntChoice) { listView. //Something to check boxes } }

当使用kotlin协同程序时,如何对一个调用暂停function的函数进行unit testing?

我有这样的课 class SomeClass { fun someFun() { // … Some synchronous code async { suspendfun() } } private suspend fun suspendFun() { dependency.otherFun().await() // … other code } } 我想unit testingsomeFun()所以我写了一个unit testing,看起来像这样: @Test fun testSomeFun() { runBlocking { someClass.someFun() } // … verifies & asserts } 但是,这似乎不工作,因为runBlocking实际上并没有阻止执行,直到runBlocking内的一切完成。 如果我直接在runBlocking里面测试suspendFun()它可以像预期的那样工作,但是我想能够一起测试someFun() 。 任何线索如何测试同步和异步代码的function?

断言variables不是空的

我有一个types为DateTime?的variablesDateTime? 在一个函数中,我检查它是否为null并希望事后使用它,而不必一直使用它?. 每一个电话。 在例如Kotlin中,IDE识别出这样的检查,并断言该variables之后不能为null 。 有没有办法在C#中做到这一点? DateTime? BFreigabe = getDateTime(); if (BFreigabe == null) return false; TimeSpan span = BFreigabe – DateTime.Now; //Shows Error because it.BFreigabe has the type DateTime?, even though it can’t be null 编辑: 使用时 TimeSpan span = BFreigabe.Value – DateTime.Now; 相反,它在这种情况下工作,因为.Value根本没有任何的安全。 然而,考虑到即使没有空检查也会编译,只是产生一个错误,一般的问题仍然存在。 如何说服C#前一个可空variables不能再空? 编辑2 在variables上投射日期时间。 TimeSpan span = (DateTime)BFreigabe – DateTime.Now; […]