You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/working-with-nulls-from-java/README.md
+2-10Lines changed: 2 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -3,14 +3,12 @@
3
3
# کار کردن با null ها از جاوا
4
4
5
5
برای تمرین بهتر است از IntelliJ IDEA استفاده شود
6
-
6
+
7
7
یکی از ویژگی های کاتلین Null-Safe بودن این زبونه و دیدیم که بصورت پیشفرض تایپ ها نمیتونن null باشن و اگر میخواین که یک متغیر رو null کنین باید بیان کنین که اون nullable هه ولی خب زمانی که نوبت به همکاری با Java میرسه قضیه فرق میکنه، چراکه همه چی میتونه توی جاوا null باشه. خب اینجا باید چیکار کنیم؟
8
8
9
9
راستیتش قضیه خیلی سادست. به عبارتی برمیخوریم که ممکنه null باشه،خیلی ساده تنها از عملگر “?” استفاده میکنیم و تمام. یک مشکلی اینجا پیش میاد، مشکل که نه درواقع یک جور میشه گفت کدمون زشت میشه چرا که عبارتی خواهیم داشت که در اون به صورت تفریط از "?." استفاده شده، که این باعث میشه کدمون زشت بشه. برای حل این موضوع میتونیم از Annotation ها استفاده کنیم، بگیم که ما میدونیم که این عبارت ممکن نیست که null بشن و نیازی نداریم که از عملگری استفاده کنیم که این بازم مشکلات خودشو به وجود میاره. راه حل نهایی چیه ؟ درواقع زمانی که با جاوا کار میکنیم تصمیم نهایی با توسعه دهنده است که عبارت صدا زده شده این قابلیت رو داشته باشه که بتونه null باشه یا نه.
10
-
11
-
بذارین با کد واضح تر براتون توضیح بدم. تا اینجا یادتون میاد که ما کلاسی به نام KotlinCustomRepo رو به صورت زیر ساختیم :
12
10
13
-
</div>
11
+
بذارین با کد واضح تر براتون توضیح بدم. تا اینجا یادتون میاد که ما کلاسی به نام KotlinCustomRepo رو به صورت زیر ساختیم :
14
12
15
13
```kotlin
16
14
classKotlinCustomerRepo : CustomerRepository {
@@ -27,8 +25,6 @@ class KotlinCustomerRepo : CustomerRepository {
27
25
28
26
ولی اگه من `?` رو پاک کنم بازم همه چیز درسته!
29
27
30
-
</div>
31
-
32
28
```kotlin
33
29
classKotlinCustomerRepo : CustomerRepository {
34
30
overridefungetAll(): MutableList<CustomerJava> {
@@ -46,8 +42,6 @@ class KotlinCustomerRepo : CustomerRepository {
46
42
47
43
بیاین بریم سراغ کلاس CustomerJava و دوتا متد به اون اضافه کنیم
48
44
49
-
</div>
50
-
51
45
```java
52
46
public@NotNullString neverNull(){
53
47
return"A String";
@@ -61,5 +55,3 @@ public String someTimesNull(){
61
55
<divdir="rtl">
62
56
63
57
برای متد اول از یکی از Annotation های IntelliJ استفاده کردیم که مشخص میکنه این عبارت null برنمیگردونه. (میتونه از Annotation های دیگه هم استفاده بشه) ولی دقیقا تفاوت این توی کاتلین چیه؟ تفاوت اینجاست که وقتی در یک کلاس کاتلین میخوایم از این توابع استفاده کنیم، کاتلین متوجه میشه که متد اول نمیتونه null باشه و این درحالیه که متد دوم رو nullable تصور میکنه.
0 commit comments