Learn Java
304 subscribers
92 photos
1 video
94 files
84 links
یاد گیری زبان برنامه نویسی جاوا و نکات و مفاهیم
کاربردی ان



@parsa8113
@bardiademon
Download Telegram
سورس کد این پروژه
کلاس Optional چیست و چرا باید از آن استفاده کنیم؟

کلاسی است که در جاوا ۸ معرفی شده و هدف ان جلوگیری از خطای معروف nullpointerexception میباشد(هرچند گویا به طور کامل از چنین خطایی نتوانسته جلوگیری کند)
میتوان گفت بیشتر ابزاری ست برای راحت تر چک کردن مقادیر تهی و راحت تر گریختن از خطای nullpointerexception

بیگمان هرکس که با جاوا کد زده باشد با خطای nullpointerexception اشنا میباشد.
فرض کنید کلاسی به نام Person داریم و در ان یک فیلد به نام name و یک گتر برای آن داریم:
public class Person {
private String name;
public String getName() {
return name;
}
}

حال در کلاس main برنامه ی خود یک متد داریم به این صورت:(فرض کنید این متد بر اساس یکسری عملیات به مقدار null رسیده است..مثلا Person zرا از دیتابیس خوانده و هیچ مقداری پیدا نکرده است)
public static Person getPerson() {
return null;
}

طبعا هنگامی که در main چنین خط کدی را بنویسیم :
public static void main(String[] args) {
getPerson().getName();

}

به خطای nullpointerexception برمیخوریم.

حال راه حل جاوا هشت برای گریز از این خطا چیست؟

ابتدا توضیحاتی اندک ولی کارامد درمورد متد های کلاس اپشنال میدهیم:
کلاس اپشنال از دیزاین پترن Factory استفاده میکند(اجازه ی ساخت شی با کلید new از ان را نداریم):
Optional.empty();
Optional.of(T t);
Optional.ofNullable();

متد اول به جای همان مثال بالا که null برگشت دادیم استفاده میشود...متد دوم یک مقدار میپذیرد با این شرط که تهی نباشد و متد سوم میتواند مقداری تهی نیز بپذیرد

حال مثال اول را اینگونه بازنویسی میکنیم:
در اغاز بایستی نوع بازگشتی متد را از جنس Optionalتعریف کنیم:
public static Optional<Person> getPerson() {

return Optional.empty();
}


حال در متد main متد getPerson را call میکنیم:
public static void main(String[] args) {
Optional<Person> op=getPerson();
System.out.println(op);

}

خواهیم دید که دیگر خبری از ارور nullpointerexception نیست بلکه چنین چیزی در خروجی مشاهده میکنیم:
Optional.empty


سایر متد های سودمند کلاس اپشنال:

orElse(T t);
اگر مقدار وجود داشت...مقدار Tرا برگشت میدهد وگرنه مقداری که در ورودی متد داده اید را برگشت میدهد(دیگر مقدار null درکار نخواهد بود)
isPresent();
اگر مقداری داخل اپشنال بود true برگشت میدهد اگر نبود false
get();
اگر مقدار وجود داشت برگشت میدهد و اگر نبود nosuchelementexception برگشت میدهد(و بازهم خبری از ارور null نیست)

ifPresent(Consumer<? super T> consumer)
اگر مقدار وجود داشت عملیات مورد نظرمان انجام شود
ifPresentOrElse(Consumer<? super T> consumer,Runnable run)
اگر مقدار وجود داشت عملیات مورد نظر انجام شود و اگر تهی بود متد run از اینترفیس runnable صدا زده میشود

و بسیار متد های سودمند دیگر
توجه داشته باشید runnable در بالا ربطی به ترد ندارد و صرفا بخاطر متد run از ان استفاده شده است
@this_java
👍1
newsproject.zip
59.8 KB
یک پروژه ی سایت اخبار با servlet,jspداخلش از ساختار ماژولار میون استفاده شده

@this_java
newswebsite.sql
2.8 KB
فایل دیتابیس پروژه ی بالا....مسیرش رو در فایل jdbcutilsوارد کنید

@this_java
روز جهانی گرامیداشت برنامه نویس مبارک🌹

@this_java
کلاس Robot

java.awt.Robot

یک کلاس کاربردی برای کنترل موس و کیبورد و ...

روش استفاده از این کلاس بسیار ساده است

————————————————————
ابتدا یک شی از این کلاس میسازید

final Robot robot = new Robot ();
شی یک AWTException پرتاب میکند ، پس با try - catch یا پرتاپ خطا throws AWTException ان را مدیریت کنید


به منظور کنترل موس به روش زیر عمل کنید:
robot.mouseMove (15 , 15);

با این کار موس به موقعیت 15 , 15 تغییر میکند

ورودی اول این متد x و ورودی دوم y است

میشود با این روش یک رموت کنترل از راه دور برای سیستم طراحی کرد

@this_java
@bardiademon
Live stream started
ترتیب توالی کد زیر به چه صورت است؟

public class Main {
public static void main(String[] args) {
try {
throwException();
}catch (Exception e){
System.err.println("Exception Handled in main");
}
}

private static void throwException() throws Exception {
try {
System.out.println("Method throwException");
throw new Exception();
} catch (Exception e) {
System.out.println("Exception handled in method throwException");
throw e;
} finally {
System.err.println("Finally executed");
}
}
}

گزینه ی یک:
Method throwException
Exception handled in method throwException
Finally executed
Exception Handled in main
گزینه ی دو :
Method throwException
Exception Handled in main
Exception handled in method throwException
Finally executed

گزینه ی سه:

Method throwException
Exception handled in method throwException
Exception Handled in main
Finally executed

گزینه ی چهار : هیچکدام

@this_java
Learn Java via @like
ترتیب توالی کد زیر به چه صورت است؟ public class Main { public static void main(String[] args) { try { throwException(); }catch (Exception e){ System.err.println("Exception Handled in main"); } } …
👍🏼 یک مثال عالی برای درک کار کرد try - catch و throws و throw

پ.ن:گزینه ی چهار رو گذاشتم خالی نباشه
ولی بعضی از دوستان چهار هم انتخاب کردند😄
Learn Java via @like
ترتیب توالی کد زیر به چه صورت است؟ public class Main { public static void main(String[] args) { try { throwException(); }catch (Exception e){ System.err.println("Exception Handled in main"); } } …
پاسخ صحیح گزینه ی ۱
دلیل:

هر زمان که استثنایی گرفتار شود .. حتی اگر در بلاک catch استثنایی دیگر راه اندازی شود ..ابتدا بلاک finally اجرا می‌شود (برای آزاد سازی منابع)
پس در این برنامه پس از راه اندازی استثنا و اجرای بلاک finally است که استثنا به متد main پرتاب می‌شود
این نکته را به یاد داشته باشید که در بلاک finally امکان راه اندازی استثنا وجود ندارد

@this_java
ترتیب اجرای کد زیر به چه صورت است؟

public class Main {

static {
System.out.println("Static block");
}

{
System.out.println("Non-static block");
}

public Main() {
System.out.println("Constructor");
}

public static void main(String[] args) {
System.out.println("main method");
Main m = new Main();
System.out.println("finish");

}
}
گزینه ی یک :
static block
main method
contructor
non-static block
finish

گزینه ی دو :
main method
static block
constructor
non-static block
finish
گزینه ی سه:
static block
non-static block
main method
constructor
finish
گزینه ی چهار:
Static block
main method
Non-static block
Constructor
finish

@this_java
project.pdf
201 KB
ببینید چی آوردم براتون
سورس کد این پروژه در فایل پایین

@this_java
langclass.zip
221.9 KB
@this_java

در این پروژه از اسپرینگ بوت + jsf استفاده شده (view resolverهای jsf ادد شده اند)
ServerSocket.mkv
29.7 MB
Http Request Response , ServerSocket

@this_java
@bardiademon
آموزش تخصصی جاوا از مبتدی تا پیشرفته به صورت غیر حضوری و آنلاین (پروژه محور) و تضمینی

Java SE , Java EE , Spring boot , Socket programming , android

برای اطلاعات بیشتر و ثبت نام به پیوی های زیر مراجعه کنید:
👨🏼‍💻@bardiademon
👨🏼‍💻@parsa8113
-----------------------
@this_java
Lamda.zip
13.5 KB
مثال استفاده از لمبدا...
داکیومت متد ها کامل توضیح میده کار هر متد چیه
توی متد main هم مثال ها اجرا شده

@this_java
👍1