Tag: Java

为什么Kotlin的字符串插值在Java中串联字符串?

所以,基本上我想知道Kotlin的字符串插值如何看Java(反编译的字节码)。 起初我以为它会使用StringBuffer(或StringBuilder)或String.format(),但它似乎是串联。 这样做真的是最佳吗?字符串池呢? 这是我的Kotlin代码: fun main(args: Array) { val age : Int = 24 var mySuperString : String = “Dato is ${age} years old!” println(mySuperString) } 这里是我反编译的Java代码forms* .class文件: import java.io.PrintStream; import kotlin.Metadata; import kotlin.jvm.internal.Intrinsics; import org.jetbrains.annotations.NotNull; @Metadata(mv={1, 1, 6}, bv={1, 0, 1}, k=2, d1={“\000\024\n\000\n\002\020\002\n\000\n\002\020\021\n\002\020\016\n\002\b\002\032\031\020\000\032\0020\0012\f\020\002\032\b\022\004\022\0020\0040\003 \006\002\020\005 \006\006”}, d2={“main”, “”, “args”, “”, “”, “([Ljava/lang/String;)V”, “KotlinProject”}) public final […]

(已解决)Bugsnag w / Spring(Kotlin / Java):没有收到任何错误报告

自从昨天以来,我一直试图在一个新的项目上安装Bugsnag,但我似乎无法做到。 这个项目是用Kotlin编写的,我使用的是Spring Boot框架。 我遵循所有的集成指南的步骤(得到我的Bugsnag豆,与正确的API键,配置exception处理程序等)。 所以,我一直在调试我的应用程序,处理程序被调用,因为它应该,调用bugsnag.notify也是有效的,我看到它进入交付步骤,并通过它成功,但仍然没有错误报告显示在Bugsnag网络应用程序。 我不知道如何调试它比我已经有了。 以下是一些相关的代码示例: // Application.kt @Configuration open class ApplicationConfiguration(private val config: Config) { @Bean open fun bugsnag(): Bugsnag = Bugsnag(config.bugsnag.key).apply { setReleaseStage(config.envName) } } 这是我的处理程序 // BugsnagHandlerExceptionResolver.kt @Component class BugsnagHandlerExceptionResolver(private val bugsnag: Bugsnag) : HandlerExceptionResolver, Ordered { override fun getOrder(): Int = 0 override fun resolveException(request: HttpServletRequest, response: HttpServletResponse, handler: Any?, […]

已实施/重写方法中的参数的适当名称

我正在使用android studio 3.0.1,我正在使用kotlin开发android应用程序。 所以,我已经在我的项目中配置了kotlin。 当我重写任何方法配置kotlin后,我得到的参数名称为p0,p1,p2等,如下所示。 override fun query(p0: Uri?, p1: Array?, p2: String?, p3: Array?, p4: String?): Cursor { … } 而不是这些名字,我想要像下面的投影,选择,selectionArgs等参数的适当名称。 public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) { … } 当我使用java它工作正常,但是当我开始使用kotlin这个问题发生。 这个参数名称很混乱。 所以,我想获得像我在Java代码中获得的名称。 有没有办法做到这一点?

Java Interop:将@JvmName应用于接口或抽象类中的属性的获取者

通常,我们可以在kotlin中编写下面的代码: val hasValue : Boolean @JvmName(“hasValue”) get() = true 这将为Java interop生成方法hasValue()而不是getHasValue() 。 但是,在一个接口,这给了我一个编译错误: val hasValue : Boolean @JvmName(“hasValue”) get 抽象类中的以下声明也是如此: abstract val hasValue : Boolean @JvmName(“hasValue”) get 所以这里是我的问题:如何告诉kotlin编译器使用hasValue()而不是getHasValue()来获取kotlin接口中属性的getter(和setter)?

Android Kotlin:TextView.text无法正常工作

我有一个让用户使用Firebase登录的应用,如果他们尚未登录。如果用户登录其用户个人资料信息显示正确。 在关闭应用程序并重新打开用户名和电子邮件不会设置,并进入我的默认文本。 但是,如果我退出并返回将显示。 我觉得它与更新用户界面有关,但卡住了。 如果需要,我可以在午餐rest后发布代码 用代码更新 这是MainActivity中的相关代码,这是我检查用户是否登录,如果允许他们从那里去,如果不开始登录活动。 class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { val TAG = “MainActivity” var mAuth: FirebaseAuth? = null var mUser: FirebaseUser? = null var userEmailTV: TextView? = null var userDispNameTV: TextView? = null val RC_SIGN_IN = 123 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar) val toggle = ActionBarDrawerToggle( this, drawer_layout, […]

如何用kotlin标记List

我想要通过Bundle传递一个数据类(包含int作为一个属性列表)到其他活动,因此我需要添加Parcelable实现到我的数据类。 任何想法如何包裹这个属性? data class Test(val id: Long, val files: List?) : Parcelable { constructor(parcel: Parcel) : this( parcel.readLong(), TODO(“files”)) override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeLong(id) } override fun describeContents(): Int { return 0 } companion object CREATOR : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): Test { return Test(parcel) } override fun newArray(size: Int): […]

如何排序Kotlin MutableList

我来自Java背景,我有一个简单的数组: var statues: MutableList = mutableListOf() statues.add(1) statues.add(3) statues.add(2) var sortedArray: MutableList = mutableListOf() sortedArray = statues.sortedArray() 我如何排序这个简单的数组,并存储在variablessortedArray?

IllegalStateException textview不能在Kotlin中为null

我试图创建一个方法来更新用户界面,当活动开始通过在抽屉中设置TextView的文本。 我不断收到一个TextView不能为空的错误? 我得到的错误是非法状态exceptionuserEmail不能为空 这是更新导航抽屉中的配置文件信息的updateUI private fun updateUI(user:FirebaseUser?) { if (user != null) { val userEmailText = findViewById(R.id.userEmail) userEmail.text = user.email val errorTriage : String? = user.email println(“User Email is =”+errorTriage) } else { val userEmailText: TextView = findViewById(R.id.userEmail) userEmailText.text = “Johndoe@someemail.com” userNameText.text = “John Doe” }} 如果用户已经登录,那么这是对UpdateUI的调用,如果更新导航抽屉中的配置文件数据,这是什么问题。 如果没有,则启动FirebaseUI登录活动。 override fun onStart() { super.onStart() //Checks to […]

Java / kotlin模拟pywin32(win32com)for python

更确切地说,我需要Dispatch函数,就像在python win32com.connect lib中一样。

使用kotlin lambda回调的unit testing场景

假设我们有以下function来测试 fun loadData(dataId: Long, completion: (JsonElement?, Exception?) -> Unit { underlayingApi.post(url = “some/rest/url”, completion = { rawResult, exception -> val processedResult = processJson(rawResult) completion(processedResult, exception) }) } 我很清楚如何模拟,注入,存根和validation对underlayingApi的调用。 我的问题是:代码如何看起来像validation通过completion(processedResult, exception)返回的结果completion(processedResult, exception) ?