为什么Kotlin不遵循Java语法?

我正在学习Kotlin作为Android开发人员! 出于好奇,为什么JetBrains的人不遵循Java风格的语法(他们可能拥有哪些语法),并且让开发人员更容易学习Kotlin ? 例如,在Kotlin中定义一个简单的函数: fun simpleFunc(x: Int): Int { // do stuff } 他们为什么没有这样做: fun Int simpleFunc(Int x) { // do stuff } 我希望听到你的意见

Enum.valueOf在Kotlin

有没有办法像Kotlin这样的工作,没有反思呢? inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: String?): T? { return java.lang.Enum.valueOf(T::class.java, type) } 下面的例子不能编译,因为: inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: kotlin.String?): T?绑定T的类型参数inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: kotlin.String?): T? 不满意:推断类型TestEnum? 不是kotlin.Enum<TestEnum?>的子类型 enum class TestEnum fun main() { val value: TestEnum? = safeValueOf("test") }

在java开关表达式中使用kotlin常量

我最近一直在研究Kotlin lang,并与java进行了交互。 我有以下的Java代码: public void select(int code) { switch code { case Service.CONSTANT_ONE: break; case Service.CONSTANT_TWO: break; default: break; } } Service.kt写法如下: class Service { companion object { val CONSTANT_ONE = 1 val CONSTANT_TWO = 2 } } Java编译器说,CONSTANT_ONE和CONSTANT_TWO必须是常量,但我不知道,我怎样才能使它们比现在更加稳定。 所以我的问题是:如何使用java swicth语句中的kotlin常量? 我正在使用jdk8和kotlin M14。

Kotlin maven插件编译顺序

我有一个关于kotlin-maven插件的问题:如何确定编译顺序? 我的意思是:kotlin编译器必须先来吗? 它理解java代码吗? java编译器不能理解kotlin代码,所以我想它会检查字节码,但为此,kotlin的字节码必须存在,所以有人必须确定kotline编译器必须在javac之前编译它的代码。 例如:我有Java类A,依赖于Kotlin类B和B也依赖于A. 我是否必须在maven插件中手动执行某些操作,方法是在java maven编译器之前声明它。

Kotlin属性Observable

在ReactiveUI中,我们可以使用whenAny()从property或一组属性创建observable。 我怎样才能在Kotlin中实现类似的功能?

尝试monot kotlin

Java 8没有提供Try monad。 这对功能样式中的异常处理很有用。 kotlin有没有准备好实现? 还是我应该执行一个?

Kotlin:我们可以在Kotlin中使用@订阅EventBus(GreenRobot)吗?

我的onEvent在一个片段中,如下所示,在我的Kotlin函数中捕获活动的认证。 但是,我无法得到onEvent触发。 @Subscribe fun onEvent(event: AuthenticationEvent) { if (event.isAuthenticated) { startFragment(signInFragment, SignInFragment.TAG) } else { startFragment(signOutFragment, SignOutFragment.TAG) } } 在我的build.gradle文件中,我添加了这个 compile 'org.greenrobot:eventbus:3.0.0' 有什么我需要做得到这个触发器?

Kotlin编译器是否始终保留字节码中的参数名称?

在kotlin-reflect ,类KParameter具有可空name ,其KDoc表示: 该参数在源代码中声明的名称;如果参数没有名称或名称在运行时不可用,则为null 。 无名参数的例子包括用于成员函数的这个实例,用于扩展函数或属性的扩展接收器, 在没有调试信息的情况下编译的Java方法的参数 等等 。 它讲述了众所周知的事实,即Java并不总是在字节码中包含参数名称,但它没有提到Kotlin类,尽管还有其他一些类。 我可以假设Kotlin编译器保留为Kotlin源代码中的函数声明的参数名称吗? (特别是,我需要构造函数参数名称)。

Kotlin Android编译

我得到这个错误,不知道为什么: Error:Execution failed for task ':app:compileDebugKotlin'. > java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: 0 我认为这与android gradle插件版本不兼容kotlin gradle插件版本有关。 我没有升级任何东西,它以前工作。 但突然之间,这只是开始出现,并阻止编译过程。 有没有公​​共场所,我可以找到最新的Android工作室插件基于最新的Kotlin插件? 感谢进步,J StackTrade: * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugKotlin'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) […]

如何使用kotlin-test编写Kotlin单元测试?

我正在尝试使用Kotlin测试我的代码。 当试图导入kotlin.test包时,什么都不显示。 我必须先在某处添加依赖项吗? 我怎样才能运行我的单元测试?