如何使用KClassreflection来区分Kotlin中的类和接口

我正在使用Kotlins KClass按照以下名称查找类: val i: KClass = Class.forName(“SampleClass”).kotlin 但是,我想省略接口。 到目前为止,我通过构造函数区分类和接口。 val i: KClass = Class.forName(input).kotlin if (i.constructors.isEmpty()){ println(“This is an interface”) }else{ println(“This is a class”) } 我不认为它很干净。 我正在寻找的东西沿线 i.isInterface 有这样的事情吗?

recyclerview notifyDataSetChanged()不工作 – kotlin

回收者视图不会更新后调用notifyDataSetChanged(),我发现了问题,但没有解决方案。 这里是我更改数据的代码 fun changeData(data: List) { // checking the size of the list before logI(“accountLiteList.size before: ” + accountLiteList.size) accountLiteList = data.toMutableList() // checking the size of the list after logI(“accountLiteList.size after: ” + accountLiteList.size) notifyDataSetChanged() } 但getItemCount()仍然返回0 这里是getItemCount()的代码 override fun getItemCount(): Int { logI(“getItemCount: ” + accountLiteList.size) return accountLiteList.size } 这里是日志 AccountsRecyclerAdaptor: accountLiteList.size before: […]

从exec kotlin读取输出

我需要执行一个jar文件,并将执行的进程的输出重定向到主进程的输出。 我使用下面的代码: val command = “java.exe -version” val p = Runtime.getRuntime().exec(command) val buf = p.getInputStream() val inputAsString = buf.bufferedReader().use { it.readText() } println(inputAsString) 我没有输出… 我测试了这个代码: val command = “cmd /c chcp” val p = Runtime.getRuntime().exec(command) val sc = Scanner(p.inputStream) println(sc.nextLine()) sc.close() 我有一个输出,但是当我替换“cmd / c chcp”时,我有一个错误… 如何读取“ok”的“test.jar”输出?

Kotlin,表/数组基于动态字段的条目

我正在做g-truc gli的kotlin端口 ,实际上我正在考虑稍微改变一下设计。 Gli使用纹理格式,types,swizzles等的内部rapresentation( gli::format等)。 在这个测试中 ,它实例化GL结构,传递配置文件,然后读取翻译后的gli格式: gli::gl GL(gli::gl::PROFILE_KTX); gli::texture2d TextureA(gli::FORMAT_RGB8_UNORM_PACK8, gli::texture2d::extent_type(2), 1, gli::texture2d::swizzles_type(gli::SWIZZLE_RED, gli::SWIZZLE_GREEN, gli::SWIZZLE_BLUE, gli::SWIZZLE_ALPHA)); gli::gl::format FormatA = GL.translate(TextureA.format(), TextureA.swizzles()); translate()将从表中获取,并且您传递给构造函数的配置文件是需要的,因为该表中的某些输入字段是依赖于配置文件的 : inline gl::gl(profile Profile) : Profile(Profile) { bool const HasSwizzle = has_swizzle(Profile); external_format const ExternalBGR = HasSwizzle ? EXTERNAL_RGB : EXTERNAL_BGR; … format_desc const Table[] = … } 该表中的每个条目都是以下结构体 : struct format_desc […]

Kotlin monad:重构一个构造函数来处理CPS

我是函数式编程和Kotlin的绝对初学者,试图解决我从我自问的问题中创建的练习; 我目前的问题是“如何使用端口和适配器架构将function编程应用于真实世界的应用程序? 目前正在学习有关monad,我有下面的函数,其中Perhaps只是一个重命名的Either用于exception处理 。 这个函数接受一个包含任意HTTP参数的RequestModel , Perhaps返回一个CountBetweenQuery ,它只是一个包含两个LocalDate的数据类。 private fun requestCountBetweenQueryA(model: RequestModel): Perhaps { return try { Perhaps.ret(CountBetweenQuery(extractLocalDateOrThrow(model, “begin”), extractLocalDateOrThrow(model, “end”))) } catch (e: UnsupportedTemporalTypeException) { Perhaps.Fail(Err.DATE_FORMAT_IS_INVALID) } catch (e: DateTimeException) { Perhaps.Fail(Err.DATE_FORMAT_IS_INVALID) } } private fun extractLocalDateOrThrow(it: RequestModel, param: String): LocalDate = LocalDate.from(DateTimeFormatter.ISO_DATE.parse(it.parameters.first { it.key == param }.value)) 在一个OO语言中,我会重构这个,以便在常规exception处理程序中的exception处理方式或上面的更高版本(将重复的代码提取到单个方法中)进行exception处理。 当然,我想把我的extractLocalDateOrThrow变成一个perhapsExtractLocalDate作为我的练习的一部分: private fun perhapsExtractLocalDate(it: RequestModel, […]

Kotlin Android扩展和菜单

有没有办法使用合成属性,而不是使用findItem方法来访问fragment_photo_gallery布局中定义的menu_item_search菜单项? override fun onCreateOptionsMenu(menu: Menu, menuInflater: MenuInflater) { super.onCreateOptionsMenu(menu, menuInflater) menuInflater.inflate(R.menu.fragment_photo_gallery, menu) //is there a way to access searchItem using synthetic properties? val searchItem = menu.findItem(R.id.menu_item_search) }

Kotlin,Number的通用操作

我有以下 abstract interface Vec2t { var x: T var y: T } data class Vec2(override var x: Float, override var y: Float) : Vec2t 我有一个界面,我定义了几个操作,例如: interface fun_vector2_common { fun abs(res: Vec2, a: Vec2): Vec2 { res.x = glm.abs(ax) res.y = glm.abs(ay) return res } } 使用generics可以实现,比如abs吗? interface fun_vector2_common { fun abs(res: Vec2t, a: Vec2t): Vec2t […]

Android室:kotlin中的多模块项目

有没有人使用多模块Android的房间成功? 每当我在主模块中拥有所有的实体类时,所有的东西都可以正确编译。 当我将任何实体类(例如Person.kt )移动到主模块所基于的域模块时,整个项目的编译失败。 似乎没有find现在位于域模块中的文件( Person.java )。 我在两个模块中都使用了kotlin-kapt插件,并生成了正确的文件,但由于某些原因,它并没有被主模块拾取。

在Kotlin安装和Getters

我试图从一个按钮被按下时,从另一个活动更改trx的值,我试过的是 ScoresActivity.kt : class ScoresActivity : AppCompatActivity(), View.OnClickListener { var trx = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_scores) } } 其他职业: override fun onClick(p0: View?) { when(p0){ button_1 -> { ScoresActivity().trx = 5 } } 但是,只要我打印trx的值是0。

预期types不接受Java中的空值,但Kotlin中的值可能为空

我正在构建一个运动应用程序,并在编译期间遇到问题。 getCachedSubmission函数内部的提交variables为null,似乎需要一个空的句柄,但我不确定。 这是下面的代码: import com.bluebeam.premierleaguego.features.model.SubmissionWrapper import com.bluebeam.premierleaguego.data.reddit.RedditAuthentication import com.bluebeam.premierleaguego.data.service.RedditService import com.google.common.base.Optional import io.reactivex.Single import net.dean.jraw.models.CommentSort import net.dean.jraw.models.Submission import java.util.* import javax.inject.Inject import javax.inject.Singleton import javax.annotation.Nullable /** * Implementation of the [SubmissionRepository] interface. Stores [SubmissionWrapper]s in a map * keyed by their id. * TODO: should there be a limit to how many submissions are cached? […]