Что эквивалентно статическим методам Java в Kotlin?

вы также можете использовать awk, поскольку он имеет возможность находить фиксированную строку, а также возможности программирования, например только

awk '{for(i=1;i<=NF;i++) if($i == "mystring") {print "do data manipulation here"} }' file
483
задан pdeva 1 November 2016 в 00:52
поделиться

4 ответа

При необходимости в функции или свойстве, которое будет связано с классом, а не с экземплярами его, можно объявить это в сопутствующем объекте:

class Car(val horsepowers: Int) {
    companion object Factory {
        val cars = mutableListOf<Car>()

        fun makeCar(horsepowers: Int): Car {
            val car = Car(horsepowers)
            cars.add(car)
            return car
        }
    }
}

сопутствующий объект является одиночным элементом, и к его участникам можно получить доступ непосредственно через название содержания класса

val car = Car.makeCar(150)
println(Car.Factory.cars.size)
-1
ответ дан 22 November 2019 в 22:23
поделиться

kotlin поставщик документов три способа сделать это, первое, определяют функцию в пакете, без класса:

package com.example

fun f() = 1

вторым является использование @JvmStatic аннотация:

package com.example

class A{
@JvmStatic
fun f() = 1
}

и третье сопутствующий объект использования:

package com.example

clss A{
companion object{
fun f() = 1
}
}
0
ответ дан 22 November 2019 в 22:23
поделиться

Нет никакого статического ключевого слова в kotlin. kotlin, документы рекомендует использовать функции уровня пакета, если Вы хотите следовать за DRY. Создайте файл с расширение .kt и поместите свой метод в него.

package p
    fun m(){
    //fun body
    }

после компиляции m будет иметь подпись общедоступный статический финал пусто

и

import p.m

☺

1
ответ дан 22 November 2019 в 22:23
поделиться

Для Android с помощью строки от единственного действия до всего необходимого действия. Точно так же, как помехи в java

public final static String TEA_NAME = "TEA_NAME";

Эквивалентный подход в Kotlin:

class MainActivity : AppCompatActivity() {
    companion object {
        const val TEA_NAME = "TEA_NAME"
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

Другое действие, где значение необходимо:

val teaName = MainActivity.TEA_NAME
0
ответ дан 22 November 2019 в 22:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: