Tag: Java8

Android工作室在项目中找不到java.math.BigInteger的一些方法

我用kotlin在Intellij Idea中实现了一个项目。 这是没有错误的工作。 这是我的Intellij项目照片没有错误 但是当我在Android Studio中实现这个项目时,我得到错误,因为工作室无法在BigInteger类中找到此方法 longValueExact() Android Studio项目照片: 我的电脑中有一个JDK(v 1.8)。 但在Itellij项目这个方法工作,并在Android工作室没有工作。 我在android studio中打开java.math.BigInteger类,并看到longValueExact()方法: 科林类: open class AuthKey(val key: ByteArray) { constructor(key: ByteBuffer) : this(key.array()) init { if (key.size != 256) throw RuntimeException("AuthKey must be 256 Bytes found ${key.size} bytes") } // see https://core.telegram.org/mtproto/description#key-identifier // SHA1 generates 20 bytes long hash, authKeyId is the lower […]

显示神秘行为的功能

我正在开发与kotlin援助的android应用程序,但问题是基于纯粹的kotlin基础。 下面是显示一些不寻常的行为的功能: fun CatchThat(funct: () -> Unit){ try { funct() }catch (ex: Error){ ex.printStackTrace() } } 当我在我的代码中使用它 CatchThat { // Proprietary Code goes in here } 调试器无法正常工作(有时) 专有代码根本不执行(有时) 为什么遇到这种行为,或者我得到一些错误的概念(也许lambdas )。 任何帮助或建议都热烈欢迎。(我是kotlin的tyro) 编辑我在做私有代码的事情。 我正在尝试调用一个Thread Pool ,然后调用一个Web活动。 这是最好的,我只能解释一下。 我为此感到抱歉。

如何映射java.util.Optional <Something>到某些东西? 在Kotlin

我有一个方法返回java.util.Optional<Something> 。 我想从Kotlin中使用这种方法,而且我希望我的结果是Something? ,而不是Optional<Something> 如何在科特林,用惯用的方式做到这一点? 调用.orElse(null) on Optional给了我Something? 的确,但是看起来不太好。 Kotlin不会抱怨,如果我写val msg: Something = optional.orElse(null). ( msg被声明为Something ,而不是Something? – 我松散的编译类型检查)。 我使用Kotlin 1.0.3

与java8和Kotlin错误

我有一个应用程序,我在使用retrolambda,所以在build.gradle我有 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 一切都很好,除非我加入对Kotlin的支持。 添加Kotlin插件我得到以下错误: 错误:将字节码转换为dex时出错:原因:Dex无法解析版本52字节码。 这是由使用Java 8或更高版本编译的库依赖性引起的。 如果在库子模块中使用“java”gradle插件,则将targetCompatibility ='1.7'sourceCompatibility ='1.7'添加到该子模块的build.gradle文件中。 我发现许多类似于这个问题的答案,但没有解决方案适用于我的情况。 这是我的build.gradle: buildscript { repositories { maven { url 'https://maven.fabric.io/public' } mavenCentral() } dependencies { classpath 'me.tatarka:gradle-retrolambda:3.3.1' classpath 'io.fabric.tools:gradle:1.+' } } repositories { // Required because retrolambda is on maven central mavenCentral() maven { url 'https://maven.fabric.io/public' } maven { […]

javax.time在Kotlin

我试过下面的代码在Kotlin中使用javax.time: import javax.time.calendar.LocalDate fun main(args: Array<String>){ println("Today is ${LocalDate.now()}"); } 并得到编译错误: C:\kotlin-hello-world>kotlinc hello.kt -include-runtime -d hello.jar hello.kt:1:14: error: unresolved reference: time import javax.time.calendar.LocalDate ^ 而谷歌搜索显示Kotlin javax.time不能使用和人们推荐使用ThreeTenBP与ThreeTenABP如果Android。 我的用例是使用Kotlin在服务器端使用javax.time类。 但是当我尝试使用TreeTenBP时,我不得不导入org.threeten.bp.LocalDate而不是javax.time.calendar.LocalDate因为TreeTen *不是JSR-310的实现,而是后端。 除了那些backport库,还有什么办法可以在Kotlin中使用javax.time? 如果是这样,如何配置这样的环境或者如何编写这样的代码?