在Kotlin中,我有如下代码:
open class A {
protected open fun B.doSomething() {}
}
class B {}
class C : A() {
override fun B.doSomething() {
print("first, do some C-specific logic")
print("now try to call super implementation. How?")
super.doSomething() // doe
在Java中,可以使用转义序列\0来表示。
\0和\0000在Kotlin中不是有效的转义序列,所以我一直在使用静态java char并从Kotlin访问它。
public class StringUtils{
public static char escapeChar = '\0';
}
在Kotlin中,是否有一个Null字符文字,或者更好的方法来做到这一点?
我试着使用Android Studio中Kotlin的方法。有点难理解。如何在activitys中使用该方法?在没有按钮的情况下还有其他的选择吗?
特别代表:
Kotlin方法:
val galatasaray = Team("Galatasaray",100)
val fenerbahce = Team("Fenerbahce",60)
fun spielen(){
var winner = ""
if(galatasaray.
例如,我有Java类(来自外部库):
class A {} // This is Java class
我想添加写在Kotlin上的扩展函数,并将其称为:
A.foo() // This is call of extension function `foo` from Kotlin code
据我所知,现在不可能在Kotlin中这样做,因为它只支持的“静态”扩展函数。对吗?
似乎没有什么可以阻止以后在Kotlin中实现这样的功能。对吗?
更新2019-06-12:这个没有回答我的问题,因为我的问题是Kotlin扩展函数与Java类的兼容性。
对于下面给定的代码,在Kotlin中,不可能执行函数forEach (或任何类似的东西,map、filter等等)因为BarList被嘲笑了。因此,不调用forEach和亲属的本机实现。在互联网上搜索了一下之后,我想到了以下几点:
public class BarList<E> extends AbstractList<E> implements OrderedBarCollection<E> {
//...
}
//...
val mockedList: BarList<Foo> = mockBarList()
val fooLis
我有一个函数,它可能需要一两个参数。在Java中,我会简单地重载:
public myMethod( Cat cat, Dog dog){…}
public myMethod( Cat cat){…}
我知道Kotlin有默认的参数,这将使重载变得不必要。但我真的不知道这些对象是默认的。那么我该如何继续呢?我不想仅仅因为将null设为默认值而断言它是可空的。有什么我没看到的选择吗?
基本上我不想这样
fun myMethod(cat:Cat, dog:Dog?=null) //it's never really nullable so don't want to preten
例如,用于嵌入调用的Kotlin作用域函数(如“run”、“run”)也提供了外部作用域函数:
Instruction.builder().apply {
setBefore(null) //ok, this function belongs to Instruction Object
PrimitiveInstruction.builder().apply {
setBefore(null) // NOPE ! this function doesn't belongs to PrimitiveInstruction
我想每隔X分钟在后台调用一些api,然后处理我得到的json文件
我查阅了以下文档:
我对kotlin很陌生(我以前使用过java ),我不知道如何使用这些函数,任何使用示例都会有帮助。
现在我有这样的事情:
Timer("NameOfMyTimer", true).schedule(refreshImages(knownPosts, knownFiles, httpClient), TimeUnit.MINUTES.toMillis(5))
结果是:
None of the following functions can be called with the argument
是否有一种方法可以使用Kotlin扩展在Jetpack组合中添加自己的形状大小?
Jetpack中的默认形状类实现组成:
val Shapes = Shapes(
small = RoundedCornerShape(4.dp),
medium = RoundedCornerShape(4.dp),
large = RoundedCornerShape(0.dp)
)
这就是我如何尝试添加一个新的形状大小:
val Shapes.ExtraLarge: CornerBasedShape
get() = RoundedCornerShape(16.dp)
但我得到的接收器参数从
我试图在Kotlin中创建一个扩展函数。我确实尝试过几个教程,但不太明白如何实现这个教程。
我正试图创建这样一个setWidth()函数
//Find my_view in the fragment
val myView = v.findViewById<RelativeLayout>(R.id.my_view)
//Then use the extension function
myView.setNewWidth(500)
我就是这样定义我的扩展函数的
private fun View?.setNewWidth(i: Int) {
val layoutParams:
在Kotlin文件中,我试图重载BigDecimal类的equals方法。我有以下代码:
fun BigDecimal.equals(n: Any?): Boolean = n is Int && this.compareTo(BigDecimal(n)) == 0
问题是这个函数不被n.equals(1)调用,其中n是BigDecimal类型的。有什么问题,我怎么解决呢?
我在读。
说:
如果类具有与扩展函数具有相同签名的成员函数,则成员函数始终优先于。
同时,本书还演示了 Kotlin的stdlib扩展函数(它比的API更容易混淆)。我不明白的是,这个split扩展函数是如何在以下调用中占据优先地位的:
"12.345-6.A".split(".") // <-- Kotlin's extension function gets invoked here even though there is a member function on String class in Java with matching
我有这样的功能,将字符串语句转换为列表词。我在Java中创建了这个函数,并在Android中使用默认的Kotlin转换转换为Kotlin,但是我相信在Awesome中可以有很多方法来缩短这段代码。如果你能分享你的代码并帮助我(和所有人)提高我们在Kotlin的知识,我会很好。
private fun stringToWords(mnemonic: String): List<String> {
val words = ArrayList<String>()
for (word in mnemonic.trim { it <= ' '
我想以一种对Kotlin调用者有用的方式扩展API,而不是Java调用者。因此,我希望鼓励Kotlin用户切换到一种新的方法,而不是困扰Java用户。我们有一个混合了Java和Kotlin的大型代码库,短期内不会是100%的Kotlin。
有没有办法添加一个@Deprecate标签或类似的标签,只在Kotlin中出现,而不是Java?
如果您对特定细节感兴趣,我们有一个接受格式化字符串的Log接口,如下所示:
Log.get().info("Log message with some $expensive $things to $format")
即使禁用了日志记录,也会在每次
我在Android中学习Kotlin,但是很多代码都是废代码,因为我很难识别什么时候有些代码是调用函数或实例化类。
代码不起作用,但例如,它是好的:
class Boo{
val callFromFoo: Int = Foo(1)
val instanceFoo: Foo = Foo(2)
fun Foo(id: Int): Int {
return id
}
}
class Foo(val id: Int)
我很担心,因为调用Foo(1)和实例化Foo(2)是相
Kotlin/JUnit宣传使用带反引号的函数名进行测试。我发现你也可以使用带反引号的类名...
但我找不到任何推荐人。这是Kotlin规范中的一些东西,还是只是一个“可能很快就会消失”的意外功能?
代码示例:
@Nested
inner class `when the entity path only specifies one location` {
@BeforeEach
fun setup() {
entity = Entity(
id = "entityid1",