Tag: Java

在Java中调用Kotlin时如何省略构造函数参数的默认值?

我的kotlin文件: class Chat(var name: String, var age: Int? = 18) 我的Java文件只能做到这一点: new Chat(“John”,18); 但是我能写这个吗? new Chat(“John”);

如何迭代SparseArray?

有没有一种方法来迭代Java SparseArray(Android版)? 我用sparsearray很容易通过索引获取值。 我找不到一个。

genericstypes参数不在范围内

我正在一个小演示Android应用程序,我在一些java类和接口与kotlin混合。 我想扩展名为MvpViewStateActivitygenericstypes参数的java类: abstract class MvpViewStateActivity<V extends MvpView, P extends MvpPresenter > { … } MvpView只是一个空的java接口: interface MvpView { … } 而MvpPresenter是这样一个java接口: interface MvpPresenter { … } 和SearchViewActivity (Java): class SearchActivity extends MvpViewStateActivity implements SearchView { … } 所以现在我创建一个kotlin接口SearchView : interface SearchView : MvpView { fun setItems( items : List ) } Item是pojo数据类。 SearchPresenter也是用kotlin编写的: interface SearchPresenter […]

如何保存参数名称进行调试?

我需要在Kotlin中inheritanceJava文件(我的IntelliJ java项目,所以我有源代码),但他们只是使用p0,p1等variables名称实现抽象方法。 所以我认为我必须打开调试信息,但在我的IDE中调试信息已经打开。 我还必须做些什么来保存类,接口等的参数名称?

无法导入swig生成的包

我正在尝试使用swig为c ++类生成java包装(所以我可以在Kotlin中使用它们)。 我能够生成Java类和JNI共享模块,但是我有问题导入包中的想法。 这是我做的。 首先我使用下面的代码生成封装代码: ../../swig/bin/swig -module wvx -c++ -java -package wvx -outdir out java_interface.i 编译它使用: gcc -shared -fpic -c java_interface_wrap.cxx -I. -I/bunch-of-paths 链接使用: g++ -lpthread -lrt -lgmp -ldl -lcrypt -lm -lc -lieee -shared -fpic java_interface_wrap.o bunch_of_dependencies.a -o libwvx.so 我现在有libwvx.so文件,我可以加载目录到我的LD_LIBRARY_PATH后加载 System.loadLibrary(“wvx”) 接下来,我进入了所有的swig生成的java文件的出口目录,并编译所有使用。 javac *.java 并用下列方法将它们打包成一个jar子 jar cf wvx.jar *.class 最后在我包含的build.gradle文件中。 dependencies { compile files(‘/path_to_jar/wvx.jar’) } […]

使用List参数从Kotlin调用Java方法

我想从一些kotlin代码调用Java方法 val list: List = emptyList() repository.find(list) // this call goes to a java class IntelliJ通知我有关types不匹配: types不匹配。 Required:(Mutuable)Set find:列表 在Java中我的方法签名: void find(@Nonnull Set list); 我知道这样做不好, 根据文档 ,我可以在Kotlin中使用MutableList 。 但是我也完全控制了Java代码,并希望更改Java代码以使用Kotlin的List 。 Java方法签名如何接受Kotlin的List? 顺便说一句:是IntelliJ告诉我Required: (Mutuable)Set ? 什么是感叹号?

在BottomsheetDialog中使用setcontentview时,会出现类似“以下函数都不能用提供的参数调用”的错误

我试图在我的片段中实现BottomsheetDialog。 但是当我尝试调用bottomSheetDialog.setContentView(view)的错误 以下任何函数都不能用在android.support.design.widget.BottomSheetDialog中定义的android.support.design.widget.BottomSheetDialog中定义的setContentView(View!)参数来调用setContentView(Int) 当我用Java代码实现它时,它完美的工作。 但是当试图用Kotlin实现这个错误时, 提供我用Kotlin试过的代码, private fun showRenewDialog(renewModel: RenewModel?) { if (bottomSheetDialog == null) bottomSheetDialog = BottomSheetDialog(activity) val view:View? = activity.getLayoutInflater().inflate(R.layout.renewal_dialog, null, false) bottomSheetDialog.setContentView(view) } 与Java相同的代码 if (bottomSheetDialog == null) bottomSheetDialog = new BottomSheetDialog(getActivity()); View view = getActivity().getLayoutInflater().inflate(R.layout.book_dialog, null, false); bottomSheetDialog.setContentView(view);

java File.createNewFile偶尔执行程序的其余部分之前抛出IOException

我有这个项目,我正在做什么,无论什么原因,每当我执行程序,并把它(我设置和所有)所需的给定参数,偶尔IOException抛出之前执行其他任何事情。 这似乎是真的,因为我到处都有伐木工人,没有人被解雇。 但是,似乎只是记录器不被解雇,因为当我看着我输出的JSON文件,它表明,它没有执行的第一步,只是没有记录器。 我是新的log4j2,所以它可能是,但我不知道(记录器不被解雇),但它似乎很奇怪,IOException应该不会发生。 因为当我在崩溃后再次执行它,它运行得很好。 (注意:这是在kotlin / jvm中,但这是关于使用JDK File类的) 这里抛出exception: https : //github.com/AlexCouch/projauto/blob/master/src/main/java/thinkingcouch/projauto/Save.kt#L114 我在使用Intellij IDEA 2017.3的MacOSX High Sierra。

等效的Java和Kotlin Stream代码之间意外的types差异

编辑2016年3月1日:公平的警告:这个问题被问到1.0.0之前的Kotlin。 从Kotlin 1.0.0开始,情况就不一样了。 请参阅下面的@Jayson Minard的Kotlin 1.0.0答案。 在使用Stream的Java 8代码中,我写了类似的东西 public static void main(String… args) { Stream integerStream = Stream.of(1,2,3); List integerList = integerStream.collect(Collectors.toList()); } 但是在Kotlin编写的类似代码中,我得到了意想不到的结果。 public fun main(args: Array) { val integerStream : Stream = Stream.of(1, 2, 3) // this is what I expect to write, like the Java 8 code, but is a compilation error: […]

科特林多点击按钮上的听众

所以对于kotlin来说,我想知道如何将多个点击事件添加到在xml中定义的按钮,就像以前在Java中一样,我们实现了View.onClickListener接口,并在onClick方法中完成其余的工作。 例如: @Override public void onClick(View v) { switch (v.getId()) { case R.id.oneButton: // do your code break; case R.id.twoButton: // do your code break; case R.id.threeButton: // do your code break; default: break; } } 我正在用新的Kotlin制作一个基本的计算器应用程序,但似乎Kotlin没有这样的规定,而是我的代码看起来太长而冗长,因为我将事件附加到所有按钮单独。 有人能告诉我如何在科特林做同样的方式吗? 谢谢