因此,我试着在youtube上学习有关Firebase存储的教程,并发现了以下代码:
val filePathAndName="product_images/"+""+timeStamp
val storageReference=FirebaseStorage.getInstance().getReference(filePathAndName)
但在本教程中,上面的代码使用了Java,我将其更改为Kotlin语法,并尝试运行该应用程序并使其工作。
在阅读了有关Firebase存储的文档之后,我发现:
// Create a child reference
//
我希望将一个值传递给一个函数,这样当我在该函数外部更改该值时,我可以看到它在我的函数中也被更新了。我知道当我传递像Int,Boolean之类的盒装类型时,它们是通过值传递的。但是看起来类也是通过值传递的: data class TestClass(var b:Boolean)
fun printBooleanIn1sec(b: TestClass) {
Thread.sleep(1000L)
println(b.b)
}
fun main(args: Array<String>) {
var testClass = TestClass(false)
我在Kotlin android项目中执行了这段代码,它将记录这两条消息。如果我将token更改为Char或String,它将只打印一条消息,这是想要的行为。在android中,java项目中的用例也可以正常工作。
val handler = Handler()
//val token1: Long = 1001L
//val token2: Int = 121
val token1: Long = 1001L
val token2: Int = 1002
handler.postAtTime(
{
Lo
我正在阅读Kotlin in action这本书,我问自己“使用构造函数引用创建类的实例”的目的是什么(如果有人对这本书感兴趣并将其放在家里,请参见第112页)。 下面是书中的代码示例: data class Person(val name: String, val age: Int)
val createPerson = ::Person
val p = createPerson("Alice", 29)
println(p) // Person(name=Alice, age=29) 我认为它看起来像一个工厂方法调用,但我不认为这是这里方法引用的(唯一)目的。
我已经将我的旧java model类转换为kotlin data class。在java中,一些对象使用@NonNull进行注释。我的问题是,如果在我的数据类中从我们的后端传递null,会发生什么?在传递null时,将此username设为可空是否有助于防止崩溃?
Java代码:
public abstract class Comment(){
@NonNull
public abstract String username();
}
Kotlin代码:(在这种情况下,如果传递null会发生什么?)
data class Comment(val username: String)
Kotlin
我尝试了数百种方法来解决这个引用问题:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
val dm = DataManager()
val adapterC
我有以下Kotlin数据类:
data class TestObject(
val boolField: Boolean,
val stringField: String,
val nullBoolField: Boolean = true,
val nullStringField: String = "default",
val notThereBoolField: Boolean = true,
val notThereStringField: String = "not
kotlin中有一个arrayOf函数。我想要一个不同的名字。我试过:
val each = ::arrayOf<UUID>
val each = ::arrayOf
val each = ::<UUID>arrayOf
val each = arrayOf
我只收到编译错误。在科特林有可能吗?多么?还是我必须重复整个签名和调用?
假设我有以下Java类:
public class A {
public Result method1(Object o) {...}
public Result method2(Object o) {...}
...
public Result methodN(Object o) {...}
}
然后,在我的Kotlin代码中:
fun myFunction(...) {
val a: A = ...
val parameter = ...
val result = a.method1(parameter) // what if i want
我有一个java类
public class CouchbaseContainer<SELF extends CouchbaseContainer<SELF>>
当我试图在kotlin中创建对象时
val couchbase = CouchbaseContainer()
Kotlin抛错了
类型推断失败:没有足够的信息在构造函数CouchbaseContainer!> ()中推断参数SELF。请特别说明一下
但是,我能够在Java中创建这个对象,如下所示:
CouchbaseContainer couchbase = new CouchbaseContai
我正在学习Kotlin,有C++和Java背景。我期望下面的代码打印true,而不是false。我知道==映射到equals。equals的默认实现不会比较每个成员,即firstName和lastName吗?如果是这样,它会不会将字符串值视为相等(因为==再次映射到equal )?显然,在Kotlin中,有一些关于平等和身份的东西我还没有弄清楚。
class MyPerson(val firstName: String, val lastName: String)
fun main(args: Array<String>) {
println(MyPerson("C
Kotlin中的also是如何返回旧的值以及赋值的?
您能解释一下这个Kotlin代码是如何工作的(最好是一步一步地)并且打印1和2吗?
另外,正如我所知道的,在Kotlin中,函数不能重新分配值,为什么它不抛出错误?
fun <T> T.myAlso(block: (T) -> Unit): T {
block(this)
return this
}
fun main() {
var a = 1
println(a.myAlso { a = 2 })
println(a)
}
谢谢
遵循关于Java中Disruptor的教程,然后进行以下调用
Disruptor<LongEvent> disruptor = new Disruptor<>(LongEvent::new, bufferSize, executor);
其中,LongEvent是使用无参数的默认构造函数实例化的。new LongEvent()。
Kotlin中的等效行正在向::new抛出一个错误。Kotlin中::new的正确语法是什么?
# THIS IS INVALID
val disruptor = Disruptor<LongEvent>(LongEvent::ne