メモ:kotlin学習4日目
8339 ワード
/**
* @ : `01. `
* @ : ty
* @ : 2018/7/20 14:27
* @ : infix
* Tom sayHelloTo John
*/
fun main(args: Array) {
val pair = "a" to 1
val tom = Person()
tom.sayHelloTo("John")
tom sayHelloTo "John"// infix
}
class Person {
infix fun sayHelloTo(name: String) {
" $name"
}
}
/**
* @ : `02. `
* @ : ty
* @ : 2018/7/20 14:27
* @ : by
*
*/
fun main(args: Array) {
val smallHeadFather = SmallHeadFather()
smallHeadFather.wash()
}
interface WashPower {
fun wash()
}
class SmallHeadFather : WashPower by BigHeadSon()
class BigHeadSon : WashPower {
override fun wash() {
println(" ")
}
}
/**
* @ : `03. `
* @ : ty
* @ : 2018/7/20 14:27
* @ : by
*/
fun main(args: Array) {
val bigHeadSon = BigHeadSon()
val smallHeadSon = SmallHeadSon()
//val bigHeadFather = BigHeadFather(bigHeadSon)
val bigHeadFather = BigHeadFather(smallHeadSon)
bigHeadFather.wash()
}
interface WashPower {
fun wash()
}
class SmallHeadSon : WashPower {
override fun wash() {
println(" ")
}
}
class BigHeadSon : WashPower {
override fun wash() {
println(" ")
}
}
class BigHeadFather(var washPower: WashPower) : WashPower by washPower
/**
* @ : `04. `
* @ : ty
* @ : 2018/7/20 14:31
* @ :
*/
fun main(args: Array) {
val smallHeadSon = SmallHeadSon()
val bigHeadSon = BigHeadSon()
val bigHeadFather = BigHeadFather(smallHeadSon)
//val bigHeadFather = BigHeadFather(bigHeadSon)
bigHeadFather.wash()
}
interface WashPower {
fun wash()
}
class SmallHeadSon : WashPower {
override fun wash() {
println(" ")
}
}
class BigHeadSon : WashPower {
override fun wash() {
println(" ")
}
}
class BigHeadFather(var washPower: WashPower) : WashPower by washPower {
override fun wash() {
println(" ")
washPower.wash()
println(" , ")
}
}
/**
* @ : `05. `
* @ : ty
* @ : 2018/7/20 14:41
* @ : by
*
*/
fun main(args: Array) {
val bigHeadSon = BigHeadSon()
bigHeadSon.money = 100// 100
println(bigHeadSon.money)//50
}
class BigHeadSon {
var money: Int by Mother()
}
class Mother {
var moneySon = 0
var moneyMother = 0
operator fun getValue(bigHeadSon: BigHeadSon, property: KProperty): Int {
return moneySon
}
operator fun setValue(bigHeadSon: BigHeadSon, property: KProperty, i: Int) {
moneySon = i / 2
moneyMother = i / 2
}
}
/**
* @ : `06. `
* @ : ty
* @ : 2018/7/20 14:41
* @ : by lazy { }
* val
* 1,by lazy ,
* 2,by lazy
* 3, by lazy
*/
fun main(args: Array) {
val lazy = Lazy()
println(lazy.name)
println(lazy.name)
println(lazy.name)
}
class Lazy {
val name: String by lazy {
println(" ")
" "
}
}
/**
* @ : `07. `
* @ : ty
* @ : 2018/7/20 15:03
* @ : lateinit
*
* 1.by lazy lateinit
* 2.by lazy ,lateinit
* 3.by lazy val lateinit var
*/
fun main(args: Array) {
val user = User()
println(user.name + user.phone)
user.name = " "
user.phone = "110"
title = " "
println(user.name + user.phone)
}
lateinit var title: String
//lateinit var money: Byte //lateinit
class User {
lateinit var name: String
lateinit var phone: String
}
/**
* @ : `08. `
* @ : ty
* @ : 2018/7/20 15:10
* @ : String.myIsEmpty()
*
*
*/
fun main(args: Array) {
val str = null
//val str = "abc"
val isEmpty = str?.myIsEmpty()
println(isEmpty)
}
fun String.myIsEmpty(): Boolean {
return this == null || this.isEmpty()
}
/**
* @ : `09.kotlin object `
* @ : ty
* @ : 2018/7/20 15:48
* @ : object ClassName
*/
fun main(args: Array) {
println(SingleInstance.name)
SingleInstance.login("110", "12345")
}
object SingleInstance {
var name: String = " "//private static String name;
fun login(phone: String, pwd: String) {
println(" : $phone + $pwd")
}
/*
static {
SingleInstance var0 = new SingleInstance();
INSTANCE = var0;
name = " ";
}*/
}
/**
* @ : `10. `
* @ : ty
* @ : 2018/7/20 16:21
* @ : companion object { }
*/
fun main(args: Array) {
val person = Person()
println(person.age)
println(Person.name)
}
class Person {
//
var age = 10
companion object {
//
var name = " "
}
}
/**
* @ : `11. Java `
* @ : ty
* @ : 2018/7/20 16:35
* @ :
*/
fun main(args: Array) {
println(Utils.instance.isCanLogin("110"))
}
/**
* 1, :private constructor()
* 2, :companion object { val instance}
* 3, :by lazy { Utils() }
*/
class Utils private constructor() {
companion object {
val instance by lazy { Utils() }// , ,
}
fun isCanLogin(phone: String): Boolean {
return phone.myIsEmpty() && phone.length == 11
}
}
/**
* @ : `12. `
* @ : ty
* @ : 2018/7/20 16:35
* @ : , Monday Tuesday Wednesday Thursday Friday Saturday Sunday
*
*/
fun main(args: Array) {
println(todo(WEEK.TUESDAY))
WEEK.values().forEach {
println(it)
}
}
enum class WEEK {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
fun todo(week: WEEK): String {
return when (week) {
in WEEK.MONDAY..WEEK.FRIDAY -> {
" "
}
WEEK.SATURDAY, WEEK.SUNDAY -> {
" "
}
else -> {
" "
}
}
}
/**
* @ : `13. `
* @ : ty
* @ : 2018/7/20 16:35
* @ : R G B
*/
fun main(args: Array) {
println(COLOR.RED.r)
println(COLOR.GREEN.g)
println(COLOR.BLUE.b)
}
enum class COLOR(var r: Int, var g: Int, var b: Int) {
RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255)
}
/**
* @ : `14. `
* @ : ty
* @ : 2018/7/20 16:35
* @ : data class JavaBean
*/
fun main(args: Array) {
val banner = Banner("title", "http://www.baidu.com", 10011)
println(banner.title + banner.url +
banner.component3())// id
val (title1, url, id) = Banner("title", "http://www.baidu.com", 10011)
println(url)
}
// BaseBean abcd = new Gson().fromJson("json", BaseBean.class);
data class Banner(
var title: String,
var url: String,
var id: Int)
/**
* @ : `15. `
* @ : ty
* @ : 2018/7/20 16:49
* @ : sealed class
*/
fun main(args: Array) {
println(hasRightSon(NedStark.SansaStark()))
println(hasRightSon(JohnSnow()))
}
fun hasRightSon(stark: NedStark):Boolean{
return when (stark) {
is NedStark.RobStark -> {
true
}
is NedStark.SansaStark ->{
true
}
is NedStark.AryaStark->{
true
}
is NedStark.BrandonStark->{
true
}
else -> {
false
}
}
}
//
sealed class NedStark {
class RobStark : NedStark()
class SansaStark : NedStark()
class AryaStark : NedStark()
class BrandonStark : NedStark()
}
class JohnSnow : NedStark()