Skip to content

Commit e31016b

Browse files
authored
Update README.md
1 parent 3694925 commit e31016b

File tree

1 file changed

+2
-10
lines changed

1 file changed

+2
-10
lines changed

src/working-with-nulls-from-java/README.md

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@
33
# کار کردن با null ها از جاوا
44

55
برای تمرین بهتر است از IntelliJ IDEA استفاده شود
6-
6+
77
یکی از ویژگی های کاتلین Null-Safe بودن این زبونه و دیدیم که بصورت پیشفرض تایپ ها نمیتونن null باشن و اگر میخواین که یک متغیر رو null کنین باید بیان کنین که اون nullable هه ولی خب زمانی که نوبت به همکاری با Java میرسه قضیه فرق میکنه، چراکه همه چی میتونه توی جاوا null باشه. خب اینجا باید چیکار کنیم؟
88

99
راستیتش قضیه خیلی سادست. به عبارتی برمیخوریم که ممکنه null باشه،خیلی ساده تنها از عملگر “?” استفاده میکنیم و تمام. یک مشکلی اینجا پیش میاد، مشکل که نه درواقع یک جور میشه گفت کدمون زشت میشه چرا که عبارتی خواهیم داشت که در اون به صورت تفریط از "?." استفاده شده، که این باعث میشه کدمون زشت بشه. برای حل این موضوع میتونیم از Annotation ها استفاده کنیم، بگیم که ما میدونیم که این عبارت ممکن نیست که null بشن و نیازی نداریم که از عملگری استفاده کنیم که این بازم مشکلات خودشو به وجود میاره. راه حل نهایی چیه ؟ درواقع زمانی که با جاوا کار میکنیم تصمیم نهایی با توسعه دهنده است که عبارت صدا زده شده این قابلیت رو داشته باشه که بتونه null باشه یا نه.
10-
11-
بذارین با کد واضح تر براتون توضیح بدم. تا اینجا یادتون میاد که ما کلاسی به نام KotlinCustomRepo رو به صورت زیر ساختیم :
1210

13-
</div>
11+
بذارین با کد واضح تر براتون توضیح بدم. تا اینجا یادتون میاد که ما کلاسی به نام KotlinCustomRepo رو به صورت زیر ساختیم :
1412

1513
```kotlin
1614
class KotlinCustomerRepo : CustomerRepository {
@@ -27,8 +25,6 @@ class KotlinCustomerRepo : CustomerRepository {
2725

2826
ولی اگه من `?` رو پاک کنم بازم همه چیز درسته!
2927

30-
</div>
31-
3228
```kotlin
3329
class KotlinCustomerRepo : CustomerRepository {
3430
override fun getAll(): MutableList<CustomerJava> {
@@ -46,8 +42,6 @@ class KotlinCustomerRepo : CustomerRepository {
4642

4743
بیاین بریم سراغ کلاس CustomerJava و دوتا متد به اون اضافه کنیم
4844

49-
</div>
50-
5145
```java
5246
public @NotNull String neverNull(){
5347
return "A String";
@@ -61,5 +55,3 @@ public String someTimesNull(){
6155
<div dir="rtl">
6256

6357
برای متد اول از یکی از Annotation های IntelliJ استفاده کردیم که مشخص میکنه این عبارت null برنمیگردونه. (میتونه از Annotation های دیگه هم استفاده بشه) ولی دقیقا تفاوت این توی کاتلین چیه؟ تفاوت اینجاست که وقتی در یک کلاس کاتلین میخوایم از این توابع استفاده کنیم، کاتلین متوجه میشه که متد اول نمیتونه null باشه و این درحالیه که متد دوم رو nullable تصور میکنه.
64-
65-
</div>

0 commit comments

Comments
 (0)