在从构造函数或init块中调用的重写抽象函数中初始化variables时,variables未正确初始化

我碰到了一些Kotlin代码的问题,我发现它涉及到调用一个从init块(或二级构造函数,或者重现这个问题)中分配一些variables的方法。 MCVE: abstract class Shader(/*Input arguments omitted for the sake of an MCVE*/){ init{ //Shader loading and attaching, not relevant bindAttribs()//One of the abstract methods. In my actual program, this uses OpenGL to bind attributes //GLSL program validation getUniforms()//Same as the previous one: abstract method using GL calls to get uniforms. This gets locations so […]

Completable。Then Then result in“other is null”

我有以下代码: fun edit(note: Note): Completable = getValidationCompletable(note).andThen(repository.insertOrUpdate(note)) private fun getValidationCompletable(note: Note): Completable { return if (!note.isValidForEdit()) { Completable.error(IllegalArgumentException(“note failed validation before edit”)) } else { Completable.complete() } } 在note.isValidForEdit()返回false的情况下,我得到以下内容: java.lang.NullPointerException: other is null at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39) at io.reactivex.Completable.concatWith(Completable.java:1040) at io.reactivex.Completable.andThen(Completable.java:908) 任何人都可以解释这一点吗?

Kotlin中的一个类和一个对象之间的区别

我是Kotlin的新手,最近把一个简单的文件从java转换为Kotlin。 我想知道为什么Android转换器将我的Java类更改为Kotlin对象。 Java的: public class MyClass { static public int GenerateChecksumCrc16(byte bytes[]) { int crc = 0xFFFF; int temp; int crc_byte; for (byte aByte : bytes) { crc_byte = aByte; for (int bit_index = 0; bit_index > 15)) ^ ((crc_byte >> 7)); crc < 0) { crc ^= 0x1021; crc &= 0xFFFF; } crc_byte <<= […]

Android室 – 简单的选择查询 – 无法访问主线程上的数据库

我正在试用Room Persistence Library的示例。 我创建了一个实体: @Entity public class Agent { @PrimaryKey public String guid; public String name; public String email; public String password; public String phone; public String licence; } 创建一个DAO类: @Dao public interface AgentDao { @Query(“SELECT COUNT(*) FROM Agent where email = :email OR phone = :phone OR licence = :licence”) int agentsCount(String email, String […]

IntelliJ错误:构建过程exception终止

我刚刚安装了IntelliJ,我正在尝试构建一个Scala项目。 但是,每次我都会收到此错误消息: 信息:6/7/16,12:14 PM – 编译在10ms内完成1个错误和0个警告错误:构建进程exception终止:/Users/USERNAME/Downloads/jdk1.8.0_91/bin/java -Xmx700m -Djava。 awt.headless = true -Djava.endorsed.dirs = \“\”-Djdt.compiler.useSingleThread = true -Dpreload.project.path = / Users / USERNAME / IdeaProjects / Test -Dpreload.config.path = / Users / USERNAME /Library/Preferences/IdeaIC2016.1/options -Dcompile.parallel = false -Drebuild.on.dependency.change = true -Djava.net.preferIPv4Stack = true -Dio.netty.initialSeedUniquifier = 2119707358466010108 -Dfile.encoding = UTF-8 -Djps.file.types.component.name = CommunityFileTypes -Duser.language = en -Duser.country […]

Kotlin二级构造函数

如何在Kotlin中声明次级构造函数? 有没有关于这个的文件? 以下不编译… class C(a : Int) { // Secondary constructor this(s : String) : this(s.length) { … } }

将视图绑定到更改的控制器属性

我在TornadoFX图书馆工作在Kotlin。 想象一下你有一个工具栏,显示当前视图有用的工具。 所以我们有一个MainController,它有一个subController属性,它是工具栏旁边一些视图的控制器。 所以如果我们的子控制器改变,视图应该更新。 此外,如果子控制器的任何属性(例如selectedTool,tools)发生更改,则工具栏应相应更新。 暂时,工具栏不更新。 class ToolBar : View(“Tool bar”) { private val controller: MainController by inject() override val root = vbox { tilepane { for (tool in controller.subController.tools) { button(tool.name, group).action { controller.subController.changeTool(tool) // changes selected tool } } } this += controller.subController.selectedTool.options } } 额外的信息:subController.tools是一个ArrayList和subController.selectedTool是一个工具。 现在我的问题是,什么是在TornadoFX做这个建议的方式?

部署web-ear时出现sun.reflect.annotation.TypeNotPresentExceptionProxy错误

当我尝试部署ejd-ear,web-ear到glassfish服务器。 我在web项目中添加了ejb客户端依赖项。 ejb-ear部署成功。 但是当我尝试部署web-ear时,会引发exception。 sun.reflect.annotation.TypeNotPresentExceptionProxy java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:653) at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:460) at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:286) at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:222) at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69) at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52) at java.lang.Class.initAnnotationsIfNecessary(Class.java:3070) at java.lang.Class.getAnnotations(Class.java:3050) at org.glassfish.apf.impl.AnnotationProcessorImpl.processAnnotations(AnnotationProcessorImpl.java:285) at org.glassfish.apf.impl.AnnotationProcessorImpl.process(AnnotationProcessorImpl.java:195) at org.glassfish.apf.impl.AnnotationProcessorImpl.process(AnnotationProcessorImpl.java:134) at com.sun.enterprise.deployment.archivist.Archivist.processAnnotations(Archivist.java:606) at com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:459) at com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:432) at com.sun.enterprise.deployment.archivist.Archivist.readRestDeploymentDescriptors(Archivist.java:408) at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:383) at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:246) at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:255) at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:216) at com.sun.enterprise.deployment.archivist.ApplicationFactory.openArchive(ApplicationFactory.java:165) at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:180) at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:93) at com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:826) at com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle.java:768) […]

更新Recycler视图并为屏幕旋转创建可分区(这里最好的做法是什么?)

我一直在努力学习Kotlin两个月。 我在Kotlin做了一个Reddit应用程序,在Recycler View Grid Layout显示缩略图 将我的情况情景化 在MainActivity的apiCall方法中,我调用RedditAPI ,在其中使用RedditAPI进行网络调用,并根据ResultValue object class返回Observable然后,我在MainActivity检索对象,并将其显示在Recycler View ,这很有效。 但是,当我实现无限滚动,并有新的对象生成每次向下滚动时,我不得不将所有值添加到一个mutable list cumulativeValue ,更改我的适配器的结构,只是调用adapter.notifydatasetchange()滚动,也工作出来罚款。 private val cumulativeValues = mutableListOf() 然后在onscrolllistener redditAPI.callParameters(location, page, address.queryLimit, afterValue) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { result -> cumulativeValues.addAll(result.data.children.toMutableList()) 我的代码工作,但我想实现屏幕旋转,现在我不知道我是否可以做到这一点parcelables,因为我把所有从网络调用检索到的值添加到一个可变的列表 我使用kotlin插件来实现parcelable类的另一个类, 这里有另一个类的RedditChildrenDetails作为参数,我也为这个类实现了parcelable(在同一个链接中)。 class RedditChildrenResponse(val data: RedditChildrenDetails) : Parcelable { … class RedditChildrenDetails( val url: String, val title: String, val thumbnail: String, […]

Kotlin的generics:generics映射参数中的types不匹配

我有以下使用generics的代码: abstract class Event(val name: String) interface ValueConverter { fun convert(event: E): Float fun getEventClass(): Class } class ValueConverters { private val converters = HashMap<String, ValueConverter>() fun register(converter: ValueConverter) { converters.put(converter.getEventClass().name, converter) } fun unregister(eventClass: Class) { converters.remove(eventClass.name) } fun convert(event: E): Float { return converters[event.javaClass.name]?.convert(event) ?: 0.0f } fun clear() { converters.clear() } } […]