ݺߣ

ݺߣShare a Scribd company logo
Кирилл Розов
Android разработчик
Kotlin
Следующий язык после Java
К обязательно прочтению
Kotlin - следующий язык после Java
Kotlin - следующий язык после Java
Kotlin - следующий язык после Java
Kotlin - следующий язык после Java
Any language
Compiler
JVM языки
JVM языки
Kotlin - следующий язык после Java
Переменные
val a: Int = 1
val a = 1
var b = 2
val c: Int
c = 3
Null Safety
Message message = queryMessage();
String text = “”
if (message != null) {
if (message.from != null) {
text = message.from;
}
}
Null Safety
Null Safety
val stringNotNull: String = "" // Valid
val stringNotNull: String = null // Error
val stringNullable: String? = null // Valid
val stringNullable: String? = "" // Valid
Null Safety
Message message = queryMessage();
String text = “”
if (message != null) {
if (message.from != null) {
text = message.from;
}
}
val text = queryMessage()?.from ?: “”
Data класс
public class Device {
private String id;
private String name;
private String cpu;
private long ramSize;
public Device(@NotNull String id, @NotNull String name, @NotNull String cpu, long ramSize) {
this.id = id;
this.name = name;
this.cpu = cpu;
this.ramSize = ramSize;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCpu() {
return cpu;
}
public void setCpu(String cpu) {
this.cpu = cpu;
}
public long getRamSize() {
return ramSize;
}
public void setRamSize(long ramSize) {
this.ramSize = ramSize;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Device device = (Device) o;
return ramSize == device.ramSize && id.equals(device.id) && name.equals(device.name) && cpu.equals(device.cpu);
}
@Override
public int hashCode() {
int result = id.hashCode();
result = 31 * result + name.hashCode();
result = 31 * result + cpu.hashCode();
result = 31 * result + (int) (ramSize ^ (ramSize >>> 32));
return result;
}
@Override
public String toString() {
return "Device{" + "id='" + id + ''' + ", name='" + name + ''' + ", cpu='" + cpu + ''' + ", ramSize=" + ramSize + ‘}';
}
}
Data класс
data class Device(var id: String, var name: String)
Операции с коллекциями
Операции с коллекциями
List<Device> qualcommCpuDevices = new ArrayList<>();
for (Device device : devices)
if (device.getCpu().equals("Qualcomm"))
qualcommCpuDevices.add(device);
List<Device> largeRamQualcommDevices = new ArrayList<>();
for (Device device : qualcommCpuDevices)
if (isLargeRamDevice(device))
largeRamQualcommDevices.add(device);
List<String> deviceNames = new ArrayList<>();
for (Device device : largeRamQualcommDevices)
deviceNames.add(device.getName());
Операции с коллекциями
devices.stream()
.filter(device -> device.getCpu().equals("Qualcomm"))
.filter(Device::isLargeRamDevice)
.map(Device::getName)
.collect(Collectors.toList());
Операции с коллекциями
devices.filter { it.cpu == "Qualcomm" }
.filter(Device::isLargeRamDevice)
.map { it.name }
.toList()
Singletone
class Singletone {
private static Singletone inst;
public static Singletone getInstance() {
if (inst == null) {
synchronized (Singletone.class) {
if (inst == null) inst = new Singletone();
}
}
return instance;
}
}
Singletone
object Singletone
Lazy
public static Singletone getInstance() {
if (inst == null) {
synchronized (Singletone.class) {
if (inst == null) inst = new Singletone();
}
}
return instance;
}
Lazy
val instance by lazy { Singletone() }
Методы
String concat(String prefix, String postfix, String... values)
Методы
String concat(String prefix, String postfix, String... values)
String concat(String prefix, String... values) {
return concat(prefix, "", values);
}
Методы
String concat(String prefix, String postfix, String... values)
String concat(String prefix, String... values) {
return concat(prefix, "", values);
}
String concat(String... values) {
return concat("", values);
}
Методы
fun concat(
prefix: String = "",
postfix: String = "",
vararg values: String
)
Методы
concat(prefix=“[", postfix=“]", values=[“one","two",“three”])
Утилитные классы
public class StringUtils {
static String concat(
String prefix, String postfix, String... values)
static String concat(String... values)
}
String[] array = …;
StringUtils.concat(array);
Утилитные классы
Array<String> array = …
array.concat()
Утилитные классы
// Функция-расширение
fun Array<String>.concat(
divider: String, prefix: String, postfix: String)
Array<String> array = …
array.concat()
Строки
Object a = …;
Object b = …;
"[" + a + "," + b + "]";
Строки
Object a = …;
Object b = …;
"[" + a + "," + b + "]";
"[$a,$b]"
Kotlin - следующий язык после Java
Kotlin - следующий язык после Java
Самый быстрорастущий
язык
Официальный язык для
Android
Около 20% на Android
написаны на Kotlin
Официальная поддержка
Использование языка
крупнейшими компаниями
Kotlin - следующий язык после Java
Будет большим плюсом

• Знание языка Kotlin
С чего начать изучение
• kotlinlang.org

На русском kotlinlang.ru

• Kotlin Koins: cерия заданий для изучения языка

• “Kotlin в действие” Жемеров, Исакова
Belarus Kotlin User Group
Q&A
Спасибо за внимание

More Related Content

Kotlin - следующий язык после Java