安卓 KOTLIN - 技术教程文章

java – (Kotlin)Backend内部错误:代码生成期间的异常【代码】

我正在使用最新的Android Studio Canary版本和最新的Kotlin为Kotlin创建一个非常彻底的Android转换器.我突然得到一个编译错误,甚至认为Android Studio没有看到代码中的任何错误,它抱怨后端错误,所以我认为我的项目很好,但Android Studio有一个bug?请帮忙确认,这已经做了很多工作…. 它抱怨我的班级MassCalc,这是6500行长,因为很多情况下转换,所以也许这就是问题? UPDATE点击清洁项目或重建项目时不会发生错误,当我尝试在模拟器中...

java – Kotlin – 为非数据类生成toString()【代码】

情况: 我有一个带有lateinit字段的类,所以它们不在构造函数中:class ConfirmRequest() {lateinit var playerId: String }我想要一个包含所有字段的toString()方法,并且不想手动编写它,以避免锅炉打印.在Java中,我会使用Lombok @ToString注释来解决这个问题. 题: 有没有办法在Kotlin中实现它?解决方法:建议的方法是手动编写toString(或由IDE生成),并希望你没有太多这样的类. 数据类的目的是容纳85%的最常见情况,其中15%留给其...

android – Kotlin属性访问语法如何用于Java类(即EditText setText)?【代码】

我正在尝试将我的Android项目切换到Kotlin.我有一个EditText(TextView的子类),我想以编程方式设置提示和文本.提示按预期工作.但是对于文本,如果我尝试使用Kotlin setter语法,我会遇到类型不匹配异常:val test = EditText(context)test.setHint("hint") // Lint message: "Use property access syntax"test.hint = "hint" // oktest.setText("text") // ok (no lint message)test.text = "text" // Type mismatch:...

IntelliJ IDEA Ultimate 2018.3认为我的Java 9项目是Kotlin项目【代码】

我有一个IntelliJ项目,组成几个子项目,这些子项目都是Java 9模块.我使用Maven作为构建系统.我的项目没有“Facets”.我的运行配置如下所示: 我的项目设置如下所示: 我可以用Maven构建一切就好了.但是,当我尝试使用IntelliJ进行编译时,它会以某种方式认为我的项目是Kotlin项目并且无法编译它:Error:Kotlin: The Kotlin standard library is not found in the module graph. Please ensure you have the ‘requires kotlin.stdlib’...

在Kotlin中开发的Android库模块导出到Java Application导致失败的解决方案:Lkotlin / jvm / internal / Intrinsics【代码】

我在Kotlin开发了一个Android库模块 – 在Kotlin项目上进行了测试,一切正常.使用gradle的maven-publishing插件,我生成了aar文件并将它们上传到Maven服务器上,所以后来我使用compile’group:artifact:version’在Android Java Application上添加了lib. 库文件似乎被识别,但是,当我尝试启动Lib上存在的活动时,我得到以下堆栈跟踪:05-12 14:21:48.221 11735-11735/*****.*****.dev W/art: Unable to resolve Lbr/com/**********/da...

java – Kotlin属性的私有getter和public setter【代码】

如何在Kotlin建造一个拥有私人吸气剂(或者只是没有它)但拥有公共二传手的物业?var status private get不适用于错误:Getter可见性必须与属性可见性相同 在我的例子中,原因是Java互操作:我希望我的Java代码能够调用setStatus而不是getStatus.解决方法:目前在Kotlin,不可能拥有一个具有比该财产更明显的二传手的财产.问题跟踪器中存在语言设计问题,请随时观看/投票或分享您的用例:https://youtrack.jetbrains.com/issue/KT-3110

java – Kotlin:Interface …没有构造函数【代码】

我正在将我的一些Java代码转换为Kotlin,我不太了解如何实例化Kotlin代码中定义的接口.作为一个例子,我有一个接口(在Java代码中定义):public interface MyInterface {void onLocationMeasured(Location location); }然后在我的Kotlin代码中进一步实例化这个接口:val myObj = new MyInterface { Log.d("...", "...") }它工作正常.但是,当我将MyInterface转换为Kotlin时:interface MyInterface {fun onLocationMeasured(location: ...

Java – 使用GSON的Json的Kotlin数据类【代码】

我有这样的Java POJO类:class Topic {@SerializedName("id")long id;@SerializedName("name")String name; }我有一个像这样的Kotlin数据类data class Topic(val id: Long, val name: String)如何为kotlin数据类的任何变量提供json键,比如java变量中的@SerializedName注释?解决方法:数据类:data class Topic(@SerializedName("id") val id: Long, @SerializedName("name") val name: String, @SerializedName("image") val image...

使用Kotlin 1.3迁移到Android中的Kotlin协同程序【代码】

我应该在build.gradle文件中更改或在类中导入以在我的Android项目中使用Kotlin 1.3使用稳定的协同程序函数? 关于我的build.gradle中的协同程序的片段 实现“org.jetbrains.kotlin:kotlin-coroutines-core:$coroutines_version”实现“org.jetbrains.kotlin:kotlin-coroutines-android:$coroutines_version” 当然我使用的是Android Studio 3.3 Preview解决方法:在build.gradle中将库更改为 实现’org.jetbrains.kotlinx:kotl...

如何在Java / Kotlin中创建一个返回复杂类型的Spark UDF?【代码】

我正在尝试编写一个返回复杂类型的UDF:private val toPrice = UDF1<String, Map<String, String>> { s ->val elements = s.split(" ")mapOf("value" to elements[0], "currency" to elements[1]) }val type = DataTypes.createStructType(listOf(DataTypes.createStructField("value", DataTypes.StringType, false),DataTypes.createStructField("currency", DataTypes.StringType, false))) df.sqlContext().udf().register("to...

Android Studio 3.0 Canary 1:Kotlin测试或Java测试引用Kotlin类失败【代码】

UPDATE 此处已针对此问题提交了一个错误:https://youtrack.jetbrains.com/issue/KT-17951 更新2 该错误已在Android Studio 3.0 Canary 3中修复 原帖 我刚刚开始使用Android Studio 3.0,我从一开始就启用了kotlin支持.我在我的项目中写了一个非常简单的Kotlin类:data class Wallet(val coins: Int) {fun add(value: Int): Wallet = Wallet(coins + value)fun substract(value: Int): Wallet = if (coins > value) Wallet(coins + ...

java – 更新到Android Studio 3.1后我遇到了这个错误:找不到org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.0【代码】

更新到Android Studio 3.1后,我遇到此错误. 注意:我使用的是Java而不是KotlinCould not find org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.0.Searched in the following locations:https://maven.fabric.io/public/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pomhttps://maven.fabric.io/public/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.jarhttps://dl.google.co...

将Kotlin Array转换为Java varargs【代码】

如何将我的Kotlin数组转换为varargs Java String []?val angularRoutings = arrayOf<String>("/language", "/home")// this doesn't work web.ignoring().antMatchers(angularRoutings)How to pass an ArrayList to a varargs method parameter?解决方法:您应该使用“扩展运算符”,如下所示:*扩展运算符需要以数组参数为前缀:antMatchers(*angularRoutings)有关详细信息,请参阅documentation:When we call a vararg-fu...

如何将Java赋值表达式转换为Kotlin【代码】

像java这样的东西int a = 1, b = 2, c = 1; if ((a = b) !=c){System.out.print(true); }现在它应该转换为kotlin之类的var a:Int? = 1 var b:Int? = 2 var c:Int? = 1 if ( (a = b) != c)print(true)但这不正确. 这是我得到的错误:in " (a=b)" Error:(99, 9) Kotlin: Assignments are not expressions, and only expressions are allowed in this context实际上,上面的代码只是澄清问题的一个例子.这是我的原始代码:fun readFile...

如何将Java源文件的一部分转换为Kotlin?

在我的Kotlin项目中,我有一些Java代码,我想将其转换为Kotlin.将Java文件转换为Kotlin的菜单项被禁用,因为它不是我想要转换的整个文件. 如何将Java代码转换为Kotlin?解决方法:没有工具可以将Kotlin代码转换为Java.如果要将文件的一部分从Java转换为Kotlin,最简单的方法是从IDE中的Java文件中复制代码并将其粘贴到Kotlin文件中.

Android开发——在Java项目中引用Kotlin的库出现的问题【代码】【图】

在Android开发当中,我遇到Kotlin底层的库比Java的库好用。看到那个第三方库支持Java实现,于是我就想在Java底层项目中调用Kotlin底层库。但是我编译的时候,遇到了下面的错误错误: 无法访问Unit 找不到kotlin.Unit的类文件解决方案apply plugin: kotlin-android apply plugin: kotlin-android-extensions在当前的module的build.gradle中加入上面的代码。希望我的这篇博客对Android开发的小伙伴有用!推广一下我微信公众号,我会经...

使用Kotlin Data类替换Java DTO类的问题【代码】

我读到了Kotlin数据类,并认为它们在描述数据传输对象(DTO)的情况下非常有用.在我的Java项目中,我已经有了用Java编写的DTO类,类似于:public class Tweet {private String id;private String profileId;private String message;public Tweet() {}public String getId() {return id;}public String getProfileId() {return profileId;}public String getMessage() {return message;}public void setId(String id) {this.id = id;}pub...

Kotlin反射与Java的互操作性【代码】

在编写适用于Java和Kotlin的反射代码时,开发人员应该注意哪些警告? 例如,我有一个使用反射的现有库,它适用于Java.但是,当我在Kotlin中使用相同的代码时,我的反射代码似乎没有在字段上获取注释. 以下是我注意到的一些差异. 1.获取Class实例// Example 1.1 - Java Class<?> userClass = User.class; // From a class name userClass = userInstance.getClass(); // OR from an instance在Kotlin中获取Java类实例// Exam...

java – Kotlin Spring AliasFor【代码】

我一直在尝试在Kotlin项目中使用Springs @AliasFor注释,但似乎注释参数上的注释在运行时不可见(因此它不会被Spring选中). 例如:@RequestMapping(method = arrayOf(RequestMethod.POST)) annotation class PostMapping(@get:AliasFor(annotation = RequestMapping::class, attribute = "value")vararg val value: String = arrayOf())和…// Returns empty array instead of array with the @AliasFor annotation PostMapping::cla...

如何在Kotlin中为@PropertySource创建Java数组?【代码】

我正在尝试为基于Spring的应用程序配置@PropertySource. 在Java中,我可以这样做:@PropertySource(value = {"application.properties","other.properties" })我在Kotlin中尝试过arrayOf,但最终我的类型不匹配:@PropertySource(value = arrayOf("application.properties", "other.properties"))什么是正确的方式去这里?解决方法:值注释参数在Kotlin中以特殊方式处理(遵循其在Java中的特殊处理),如果它具有数组类型,Kotlin将其转换...

java – 在Kotlin中编写单元测试,共享变量?【代码】

我正在尝试在Kotlin中创建一些功能测试,以使用Rest Assured库向Cart Java服务发出请求. 由于我希望测试在程序上表现,我希望我可以存储第一个A??PI请求的结果并将其传递给下一个单元测试. 即 createCartTest() – > cartId – > getCartForWebsiteTest(cartId)class CartTest : RestAssuredSupport {val port = 8080val url = "http://localhost:"val cartId = null/*** Create a cart object*/@Test fun createCartTest() {given(...

java – Android kotlin覆盖onCreateView()方法内部的接口方法【代码】

我是Kotlin的新手.我有一个包含两个方法定义的接口:fun onSuccess(result: T) fun onFailure(e: Exception)现在,在我的片段中,我实现了这个接口,并希望在里面使用这些方法:override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,savedInstanceState: Bundle?): View? {....................................override fun onSuccess(result: String) {}override fun onFailure(e: Exception) {} }在java中...

在Kotlin项目中包含使用Java9或Java10构建的maven依赖项【代码】

是否可以包含Java9(或10)依赖项?因为Kotlin到目前为止只能编译到Java 8.我收到了一个java.lang.UnsupportedClassVersionError错误,显然说明我所包含的JAR /依赖项中的类已由更新版本的Java Runtime编译.但是我无法指定一个更新的JDK,它能够运行用旧版本编译的类(Kotlin的东西?).<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.7.0</version><configuration><rel...

java – 检查null时的惯用Kotlin【代码】

在Java中,我会做这样的事情:class Person {private Record record;public String name() {record().get("name");}private Record record() {if (record == null) {refetch();}return record;}private void refetch() {record = service.doSomething()}}在Kotlin,我有这个等价的代码:class Person(private var record: Record?) {fun name() : String {record().get("name");}private fun record() : Record {record ?: refetch()...

java – 使用Proxy时,为什么Kotlin会抛出IllegalArgumentException【代码】

这是使用InvocationHandler的Kotlin等效的Java代码:override fun invoke(proxy: Any?, method: Method?, args: Array<out Any>?): Any {println("before httprequest--->" + args)val ret = method!!.invoke(obj, args)println("after httprequest--->")return ret }Java代码:public Object invoke(Object o, Method method, Object[] args) throws Throwable {System.out.println("jdk--------->http" + args);Object result=m...

spring – Java Stream with :: new to Kotlin【代码】

我正在尝试将以下Spring Security代码从Java转换为Kotlin. Java的:Collection<? extends GrantedAuthority> authorities =Arrays.stream(claims.get(AUTHORITIES_KEY).toString().split(",")).map(SimpleGrantedAuthority::new).collect(Collectors.toList());科特林:val authorities = Arrays.stream(claims[AUTHORITIES_KEY].toString().split(",".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()).map(SimpleGrant...

java – kotlin内部类无法访问私有方法吗?【代码】

嗨,我是kotlin的新手,并试图从内部匿名类中调用私有函数. 以下是电话:object callback : Callback<ResponseBody> {override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {Log.d("jjj", " response is " + response.toString())displaySuccess()}override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) {}}private fun displaySuccess(){Toast.makeText(activity,"succesful", Toa...

javascript – 如何在没有stdlib的情况下使用KotlinJS?【代码】

因为在大多数情况下我们有:dependencies {compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" }Kotlin标准库对我来说似乎很大.我想通过仅创建我需要的外部方法来创建我自己的stdlib(可以更小)来最小化它. 我试图删除该方法,它编译,但生成的JS代码具有:if (typeof kotlin === 'undefined') {throw new Error("Error loading module 'streaking'. Its dependency 'kotlin' was not found. Please, check whether 'k...

java – Kotlin – 获取Ints的ArrayList中的最大值【代码】

我有这个ArrayListvar amplititudes : ArrayList<Int> = ArrayList()amplititudes.add(1)amplititudes.add(2)amplititudes.add(3)amplititudes.add(4)amplititudes.add(3)amplititudes.add(2)amplititudes.add(1)现在我想获得最大值,即4.找到最大元素的最简单方法是什么?我知道max()方法,但它会强迫我使用?返回值,因为它可能为null.有没有比这更好的解决方案?解决方法:您可以使用内置功能:val amplitudes = listOf(1,2,3,4,3,2...

android – 当我们开始新的活动到kotlin为什么我们把.java放在intent而不是.kt

根据kotlin doc,我们使用以下语法开始新活动 startActivity(Intent(this @ MainActivity,NextActivity :: class.java)) 它的kotlin为什么我们在课后添加.java?为什么不kt?解决方法:因为NextActivity :: class为您提供了KClass< NextActivity>,并且KClass有一个名为java的方法/扩展属性,它为您提供了java.lang.Class< NextActivity>对于给定的类. 你甚至可以check out the source-code for that java property.