Tag: Java

从Java调用Kotlin – 错误:包演示不存在

我不明白的文件 : 包级函数 在org.foo.bar包中的example.kt文件中声明的所有函数和属性,包括扩展函数,都被编译成名为org.foo.bar.ExampleKt的Java类的静态方法。 // example.kt package demo class Foo fun bar() { } // Java new demo.Foo(); demo.ExampleKt.bar(); 我的代码如下。 编译错误; 构建失败: thufir@dur:~/NetBeansProjects/kotlin$ thufir@dur:~/NetBeansProjects/kotlin$ gradle compileJava > Task :compileJava /home/thufir/NetBeansProjects/kotlin/src/main/java/net/bounceme/dur/kotlin/App.java:12: error: package demo does not exist new demo.Foo(); ^ /home/thufir/NetBeansProjects/kotlin/src/main/java/net/bounceme/dur/kotlin/App.java:13: error: package demo does not exist demo.ExampleKt.bar(); ^ 2 errors FAILURE: Build failed with an […]

onCreate从Java转换到Kotlin后崩溃

我将我的Launcher Activity从Java转换为Kotlin,并且在onCreate()中崩溃,我不明白它为什么会崩溃。 Java的: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 科特林: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) 调用堆栈: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.abc/com.abcAuthentication.AuthenticationActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at […]

Kotlin文件apk Android流?

什么是Android的apk的Kotlin文件的执行流程。 使用Java文件就像这样.Java文件 – > .class文件 – > classes.dex – > .apk文件。 参考这个 更多细节。

Java和Kotlin使用泛型进行铸造。 丢失类型安全

当在Kotlin / Java中编码时,我偶然发现了使用投射和泛型的东西。 似乎有可能让类型系统相信列表的类型是List<Foo> ,而它实际上是一个List<Object> 。 任何人都可以向我解释为什么这是可能的? 以下是Kotlin和Java中的一个例子: 在Kotlin的例子 fun <T> test(obj: Any): List<T> { val ts = ArrayList<T>() ts.add(obj as T) return ts } fun <T> test2(obj: Any): T { return obj as T } fun <T> test3(obj: Any): List<T> { val ts = ArrayList<T>() ts.add(test2(obj)) return ts } fun main(args: Array<String>) { val […]

Kotlin中的Void返回类型是什么意思?

我试图在Kotlin中创建没有返回值的函数。 而且我用Java编写了一个函数,但是使用了Kotlin语法 fun hello(name: String): Void { println("Hello $name"); } 我有一个错误 错误:带有块体('{…}'的函数中需要“返回”表达式) 经过几次更改后,我得到了一个可为空函数作为返回类型的工作函数。 但这不完全是我所需要的 fun hello(name: String): Void? { println("Hello $name"); return null } 根据Kotlin文档,单元类型对应于Java中的void类型。 所以在Kotlin中没有返回值的正确函数是 fun hello(name: String): Unit { println("Hello $name"); } 要么 fun hello(name: String) { println("Hello $name"); } 问题是: Void在Kotlin中意味着什么,如何使用它,以及这种用法的优点是什么?

Kotlin – 对伴侣对象的属性可见性

所以我有下面的代码,写在Kotlin。 我在最后一条指令行( return params.keys.containsAll(MANDATORY_PARAMS) )上收到编译错误,编译器说Unsolved reference: MANDATORY_PARAMS ,但我真的不明白为什么。 我认为伴侣对象应该对他们“保持联系”的类别的属性具有某种可见性。 我能做些什么来解决这个问题? 我怎样才能使MandatoryParametersValidator和它的伴侣对象可见MANDATORY_PARAMS ? (免责声明:这段代码正在从Java迁移到Kotlin,在Java版本中, mandatoryParametersHaveBeenProvided曾经是同一个类的静态方法。) import javax.validation.ConstraintValidator import javax.validation.ConstraintValidatorContext class MandatoryParametersValidator : ConstraintValidator<EnforceMandatoryParameters, Map<String, String>> { val MANDATORY_PARAMS = arrayOf("bookingReference", "lastName") override fun initialize(constraintAnnotation: EnforceMandatoryParameters?) { // do nothing } override fun isValid(params: Map<String, String>, context: ConstraintValidatorContext?): Boolean { MANDATORY_PARAMS .filter { !params.containsKey(it) } .forEach { […]

除非明确引用,否则Kotlin无法识别参数

在Kotlin编写一个Android项目时,有一个问题困扰着我。 当我尝试调用一些基本的Android库函数时,编译器要求非常具体的引用。 这是一个LoaderManager被初始化的例子。 记下最后一个参数。 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) loaderManager.initLoader(LOADER_ROUTINE, arguments, this as android.support.v4.app.LoaderManager.LoaderCallbacks<Cursor>) } 这是奇怪的部分。 如果我做一个基于Java的片段,初始化加载程序没有冗长或编译器错误,然后转换为Kotlin,没有错误: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) loaderManager.initLoader(88, arguments, this) } 我错过了什么。 Kotlin需要阻止什么情况下必须执行从第一个示例中添加WhateverSpecificClass的解决方法? 编辑:这是一些额外的上下文。 编译期间的具体错误是: Type inference failed: fun <D : Any!> initLoader (id: Int, args: Bundle!, callback: LoaderManager.LoaderCallbacks<D!>!) : Loader<D!>! cannot be applied Int, Bundle!, EditRoutine ) […]

如何解释和翻译kotlin代码到java?

我一直在试图把这个Kotlin代码翻译成Java,因为这个项目是用Java编写的。 我正在翻译Kotlin语法。 但是,还有一些我很难理解。 https://github.com/airbnb/lottie-android/blob/master/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/AppIntroActivity.kt 特别: private val animationView: LottieAnimationView by lazy { rootView.inflate(R.layout.app_intro_animation_view, false) as LottieAnimationView } private val viewPager: LockableViewPager by lazy { findViewById<LockableViewPager>(R.id.intro_activity_viewPager) } override fun generateFinalButtonBehaviour(): IntroButton.Behaviour { return object : IntroButton.Behaviour { override fun setActivity(activity: IntroActivity) { finish() } override fun getActivity(): IntroActivity? = null override fun run() {} } } […]

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

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

如何添加kotlin类到gradle JavaCompile任务

我用spring引导来使用kotlin和java来开发我的项目。 我的构建工具是gradle,一个任务定义如下: configurations { providedRuntime jpametamodel } dependencies { jpametamodel ('org.hibernate:hibernate-jpamodelgen:4.3.11.Final') } task generateMetaModel(type: JavaCompile, group: 'build', description: 'metamodel generate') { source = sourceSets.main.java classpath = configurations.compile + configurations.jpametamodel options.compilerArgs = ["-proc:only"] destinationDir = sourceSets.generated.java.srcDirs.iterator().next() doFirst { delete(sourceSets.generated.java.srcDirs) } } 这个任务适用于kotlin类,但是如果我添加kotlin类,任务不能通过抛出以下错误: Hibernate JPA 2 Static-Metamodel Generator 4.3.11.Final /…/src/main/java/com/app/web/rest/UserResource.java:18: Cannot find ….. import com.app.web.rest.dto.SimpleUser; ^ Symbol: […]