Kotlin检查函数是否需要实例参数

如果一个KCallable是使用Any()::toString创建的,那么当它被引用时,你不需要传递Any实例(当使用call )。 虽然如果它是使用Any::toString (不是Any一个实例)创建的,它需要传递一个Any实例。 所以我的问题是如何轻松地找出是否需要传递该实例参数,并且此参数是必需的? 我find了一个方法来做到这一点: callable.parameters[0].kind == KParameter.Kind.INSTANCE 但它不是很好,我想知道是否有一个更容易或推荐的方法来解决这个问题。 谢谢!

如何创建一个数据类实现Spring Secuirty特定的UserDetails

我正在尝试将一些spring-webflux示例代码迁移到kotlin。 目前我想将我的Spring Data Mongo示例转换为kotlin。 有一个User ,原Data Mongo版本看起来: @Data @ToString @Builder @NoArgsConstructor @AllArgsConstructor @Document class User implements UserDetails { @Id private String id; private String username; private String password; @Builder.Default() private boolean active = true; @Builder.Default() private List roles = new ArrayList(); @Override public Collection getAuthorities() { return AuthorityUtils.createAuthorityList(roles.toArray(new String[roles.size()])); } @Override public boolean isAccountNonExpired() { […]

如何在Kotlin上实现readLine()!!。toIntArray()?

我想实现一个函数或某种方式来从控制台顺序存储数组 。 像这样的东西: readLine()!!.toIntArray() 使用这个循环是否方便?还是可以避免? 然后你可以使用数组的索引来访问它们。 fun main(args: Array) { myFunction() } A: fun myFunction() { println(” . First number: “) val num1:Float = readLine()!!.toFloat() println(” . Second number: “) val num2:Float = readLine()!!.toFloat() println(” . Third number: “) val num3:Float = readLine()!!.toFloat() println(” . Fourth number: “) val num4:Float = readLine()!!.toFloat() val result:Float = […]

从两个列表中获取不寻常的元素 – KOTLIN

我有两个相同的模型类(STUDENT)的列表,示例学生对象结构如下, { “_id”: “5a66d78690429a1d897a91ed”, “division”: “G”, “standard”: “X”, “section”: “Secondary”, “lastName”: “Sawant”, “middleName”: “Sandeep”, “firstName”: “Shraddha”, “pin”: 12345, “isEditable”: true, “isTracked”: false } 一个列表有3个对象和其他2个。可以说,列表A有1,2,3个学生,而列表B有1个,2个 所以我的问题是有没有内置的function, 通过比较只是ID来获得不常见的元素? 如果不是,我怎么能解决这个问题。 仅供参考,以下是我已经解决的两个方法,但失败惨败。 方法1。 internal fun getDistinctStudents(studentsList: List, prefStudents: List): List { val consolidated = prefStudents.filter { prefStudents.any { students: Students -> it._id == students._id } } return prefStudents.minus(consolidated) } […]

Kotlin记录器 – 记录到文件

class LogToFile(context: Context) { companion object: KLogging() val formatter = SimpleFormatter() // val logger = LoggerFactory.getLogger(“MyLog”) **WITH THIS LINE…** val logger = Logger.getLogger(“MyLog”) //this line WORKS val dest = context.applicationContext.getExternalFilesDir(null); val fh = FileHandler(dest.path.plus(File.pathSeparator).plus(“data.txt”)) init { //..THIS LINE DOESN’T WORK (NO addHandler is there some ekvivalent for the LoggerFactory?)// logger.addHandler(fh) fh.formatter = formatter } fun […]

Gson toJson和ArrayList在Kotlin

类似于这个问题,我想将一个对象(实际上,它是一个来自翻新的API响应)转换成json字符串,所以将它存储在某个地方会更简单。 响应结构是这样的: { “metadata”: { “count”: 0, “type”: “string” }, “results”: [ { “obj1”: { “param1”: “s1”, “param2”: “s2” }, “obj2”: { “param3”: 0, “param4”: 0, “param5”: 0 }, “obj3”: 0, “obj4”: “27/12/2017” } ] } 使用List ,我将结果数组存储在一个List ,这是我传递给Gson().toJson ,如下所示: var contentResponse: String = “” try{ this.contentResponse.plus(Gson().toJson(response)) } catch (e: Exception){ Log.e(“Gson error”, e.toString()) } […]

什么时候在Spring Boot应用程序的生命周期中Kotlin内省可用?

我遇到了一个令人惊讶的错误。 我正在尝试使用存储库模式访问mongodb的应用程序。 为了减少代码重复,我想为所有的存储库建立一个通用的基类。 每个根集合(如下面的代码中的Person )的RepositoryBase将从此RepositoryBaseinheritance,并inheritance所有常用function。 data class Person(val name: String) open class RepositoryBase (val template: ReactiveMongoTemplate, private val klass: KClass) { fun count(): Mono = template.count(Query(), klass.java) } @Repository class PersonRepository(template: ReactiveMongoTemplate): RepositoryBase(template, Person::class) @RunWith(SpringRunner::class) @SpringBootTest class DemoApplicationTests { @Autowired var personRepository: PersonRepository? = null @Test fun contextLoads() { println(personRepository?.count()?.block()!!) } } 但是,这似乎并不奏效: java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.JvmClassMappingKt.getJavaClass,参数$ receiver […]

在Android中使用kotlin进行自定义视图的类DSL的OnClick监听器

我正在尝试创建一个类似DSL的OnClick监听器(在kotlin中),用于在我正在使用的Android项目中使用多个位置的自定义视图。 该视图具有ImageView,主要textview和辅助textview。 我正在试图创建一个监听器帮手,它允许你只覆盖一个接口的特定方法,而不是所有的( 本文的启发)。 但是我无法得到它的工作。 实际上它甚至不能使用普通的OnClick监听器。 这是我的ErrorMessageView: class ErrorMessageView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyle: Int = 0, defStyleRes: Int = 0 ) : FrameLayout(context, attrs, defStyle, defStyleRes) { private var mOnClickListener: OnErrorMessageViewClickListener? = null init { LayoutInflater.from(context).inflate( R.layout.custom_errorview, this, true) ButterKnife.bind(this) } interface OnErrorMessageViewClickListener { fun onImageClick() fun onPrimaryTextClick() fun onSecondaryTextClick() […]

如何创建Ktor嵌入式服务器的.jar(创建可执行文件)

我对Kotlin,Ktor和Gradle很新。 能够创建嵌入式服务器,如Ktor站点中所述,使用以下代码: BlogApp.kt : package blog import org.jetbrains.ktor.netty.* import org.jetbrains.ktor.routing.* import org.jetbrains.ktor.application.* import org.jetbrains.ktor.features.* import org.jetbrains.ktor.host.* import org.jetbrains.ktor.http.* import org.jetbrains.ktor.response.* fun Application.module() { install(DefaultHeaders) install(CallLogging) install(Routing) { get(“/”) { call.respondText(“My Example Blog sfs 122”, ContentType.Text.Html) } } } fun main(args: Array) { embeddedServer(Netty, 8080, watchPaths = listOf(“BlogAppKt”), module = Application::module).start() } 并build.gradle : group ‘Example’ […]

Kotlin索引运算符 vs get(0)

当我的代码看起来像 myList.get(0) Intellij建议我用它来替换它 myList.get()[0] 有什么优势? 更新 …抱歉,要求太快的代码实际上是 myList.get().get(0) myList是可选的 ,现在所有的感官