JavaRush /جاوا بلاگ /Random-SD /جاوا 8 گائيڊ. حصو 2.
ramhead
سطح

جاوا 8 گائيڊ. حصو 2.

گروپ ۾ شايع ٿيل

تاريخ API

Java 8 java.time پيڪيج ۾ مڪمل طور تي نئين تاريخ ۽ وقت APIs تي مشتمل آهي. نئين تاريخ API جوڊا ٽائم لائبريري جي مقابلي ۾ آهي ، جڏهن ته اهو ساڳيو ناهي. هيٺيان مثال نئين API جي سڀ کان اهم حصن کي ڍڪيندا.
گھڙي
گھڙي موجوده تاريخ ۽ وقت تائين رسائي ڏئي ٿي. گھڙيون وقت جي علائقن کان واقف آھن ۽ تنھنڪري موجوده وقت کي مليس سيڪنڊن ۾ موٽڻ لاءِ System.currentTimeMillis() جي بدران استعمال ڪري سگھجن ٿيون . هن قسم جي وقت جي درستگي پڻ انسٽنٽ ڪلاس جي نمائندگي ڪئي وئي آهي . وراثت ۾ مليل java.util.Date شيون ٺاهڻ لاءِ Instants استعمال ڪري سگھجن ٿيون . Clock clock = Clock.systemDefaultZone(); long millis = clock.millis(); Instant instant = clock.instant(); Date legacyDate = Date.from(instant); // legacy java.util.Date
ٽائمزون
Timezones جي نمائندگي ڪئي وئي آهي خلاصي طبقي ZoneId سان . اهي آساني سان رسائي حاصل ڪري سگھجن ٿيون شمارياتي فيڪٽري طريقا استعمال ڪندي. ٽائم زون آف سيٽن جي وضاحت ڪن ٿا جيڪي فوري ۽ مقامي تاريخ ۽ وقت جي وچ ۾ تبديل ڪرڻ لاءِ اهم آهن. System.out.println(ZoneId.getAvailableZoneIds()); // prints all available timezone ids ZoneId zone1 = ZoneId.of("Europe/Berlin"); ZoneId zone2 = ZoneId.of("Brazil/East"); System.out.println(zone1.getRules()); System.out.println(zone2.getRules()); // ZoneRules[currentStandardOffset=+01:00] // ZoneRules[currentStandardOffset=-03:00]
مقامي وقت
LocalTime ٽائم زون کان سواءِ وقت ڏيکاري ٿو، مثال طور 17:30:15. هيٺ ڏنل مثال مٿي بيان ڪيل وقت زونن لاءِ ٻه مقامي وقت شيون ٺاهي ٿو. ان کان پوء اسان ٻن شين جو مقابلو ڪريون ٿا ۽ انهن جي وچ ۾ ڪلاڪن ۽ منٽن ۾ فرق جي حساب سان. LocalTime now1 = LocalTime.now(zone1); LocalTime now2 = LocalTime.now(zone2); System.out.println(now1.isBefore(now2)); // false long hoursBetween = ChronoUnit.HOURS.between(now1, now2); long minutesBetween = ChronoUnit.MINUTES.between(now1, now2); System.out.println(hoursBetween); // -3 System.out.println(minutesBetween); // -239 LocalTime مختلف فيڪٽري طريقن سان گڏ اچي ٿو تڪڙي کي آسان بڻائڻ لاءِ، بشمول اسٽرنگ پارسنگ. LocalTime late = LocalTime.of(23, 59, 59); System.out.println(late); // 23:59:59 DateTimeFormatter germanFormatter = DateTimeFormatter .ofLocalizedTime(FormatStyle.SHORT) .withLocale(Locale.GERMAN); LocalTime leetTime = LocalTime.parse("13:37", germanFormatter); System.out.println(leetTime); // 13:37
مقامي تاريخ
LocalDate هڪ مخصوص تاريخ ڏيکاري ٿي، مثال طور 2014-03-11. مثال ناقابل بدلائي رهيا آهن ۽ ساڳئي طرح ڪم ڪن ٿا LocalTime. مثال ڏيکاري ٿو ته ڪيئن حساب ڪجي نئين تاريخ کي شامل ڪرڻ يا گھٽائڻ سان ڏينهن، مهينن يا سالن کي. ذهن ۾ رکو ته هر شئي تي آپريشن هڪ نئين شئي موٽائي ٿو. LocalDate today = LocalDate.now(); LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS); LocalDate yesterday = tomorrow.minusDays(2); LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4); DayOfWeek dayOfWeek = independenceDay.getDayOfWeek(); System.out.println(dayOfWeek); // FRIDAY اسٽرنگ مان LocalDate پارس ڪرڻ ايترو ئي سادو آهي جيترو LocalTime کي پارس ڪرڻ: DateTimeFormatter germanFormatter = DateTimeFormatter .ofLocalizedDate(FormatStyle.MEDIUM) .withLocale(Locale.GERMAN); LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter); System.out.println(xmas); // 2014-12-24
LocalDateTime
LocalDateTime ڏيکاري ٿو تاريخ جو وقت. هي مٿي ڏنل تاريخ ۽ وقت جو هڪ ميلاپ آهي، هڪ ڪاپي ۾. LocalDateTime جا مثال ناقابل تبديل آھن ۽ ساڳي طرح ڪم ڪن ٿا LocalTime ۽ LocalDate. اسان طريقن کي استعمال ڪري سگھون ٿا واپس حاصل ڪرڻ لاءِ مثال جي ملڪيت جي قيمت اسان کي گهربل: LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); System.out.println(dayOfWeek); // WEDNESDAY Month month = sylvester.getMonth(); System.out.println(month); // DECEMBER long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY); System.out.println(minuteOfDay); // 1439 اضافي وقت زون جي معلومات سان گڏ، مثال کي فوري ۾ تبديل ڪري سگھجي ٿو. جاوا.util.Date مان ورثي ۾ حاصل ڪيل پراڻن قسمن ۾ آساني سان تبديل ڪري سگھجن ٿا. Instant instant = sylvester .atZone(ZoneId.systemDefault()) .toInstant(); Date legacyDate = Date.from(instant); System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014 تاريخ جي وقت کي فارميٽ ڪرڻ ساڳئي طريقي سان ڪم ڪري ٿو جيئن ڪنهن تاريخ يا وقت کي فارميٽ ڪرڻ. اڳواٽ بيان ڪيل تاريخ فارميٽ استعمال ڪرڻ بدران، اسان دستي طور بيان ڪيل فارميٽ استعمال ڪري سگھون ٿا. DateTimeFormatter formatter = DateTimeFormatter .ofPattern("MMM dd, yyyy - HH:mm"); LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter); String string = formatter.format(parsed); System.out.println(string); // Nov 03, 2014 - 07:13 java.text.NumberFormat جي برعڪس، نئون DateTimeFormatter ناقابل تبديلي ۽ ٿريڊ محفوظ آهي. لکڻ جي فارميٽ لاء نحو بابت وڌيڪ معلومات لاء، هتي پڙهو .

تشريحون

جاوا 8 ۾ تشريحون ورجائي سگهجن ٿيون. اچو ته هڪ مثال ڏسو ته اهو ڪيئن ڪم ڪري ٿو. شروع ڪرڻ لاءِ، اسان تشريح واري لفافي جي وضاحت ڪنداسين جيڪو صحيح تشريحن جي صف کي محفوظ ڪري ٿو: @interface Hints { Hint[] value(); } @Repeatable(Hints.class) @interface Hint { String value(); } جاوا 8 اسان کي هڪ ئي قسم جي ڪيترن ئي تشريحن کي استعمال ڪرڻ جي قابل بڻائي ٿو @Repeatable تشريح جو اعلان ڪندي. آپشن 1: ڪنٽينر جي تشريح استعمال ڪندي (پراڻو اسڪول) (جاوا 8 اسان کي اجازت ڏئي ٿو ته ساڳي قسم جا گھڻا تشريح استعمال ڪري سگھون هڪ @Repeatable @Hints({@Hint("hint1"), @Hint("hint2")}) class Person {} annotation جو اعلان ڪندي . نئين خصوصيت) @Hint("hint1") @Hint("hint2") class Person {} ٻه اختيار استعمال ڪندي، جاوا ڪمپلر واضح طور تي @ Hint تشريح سيٽ ڪري ٿو. اھو ضروري آھي پڙھڻ لاءِ تشريح جي معلومات کي عڪاسي ذريعي. جيتوڻيڪ اسان پرسن ڪلاس لاءِ @Hints Hint hint = Person.class.getAnnotation(Hint.class); System.out.println(hint); // null Hints hints1 = Person.class.getAnnotation(Hints.class); System.out.println(hints1.value().length); // 2 Hint[] hints2 = Person.class.getAnnotationsByType(Hint.class); System.out.println(hints2.length); // 2 تشريح جو اعلان نه ڪيو آهي ، ان کي استعمال ڪندي پڙهي سگهجي ٿو getAnnotation(Hints.class) طريقو . بهرحال، هڪ وڌيڪ آسان طريقو آهي getAnnotationsByType ، جيڪو @Hint تشريح استعمال ڪندي سڀني تشريح تائين رسائي فراهم ڪري ٿو . ان کان سواء، جاوا 8 ۾ تشريح جو استعمال ٻن مقصدن تائين وڌايو: @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) @interface MyAnnotation {}

هي سڀ ڪجهه آهي

منهنجو جاوا 8 پروگرامنگ ٽيوٽوريل مڪمل ٿي چڪو آهي. جيڪڏهن توهان JDK 8 ۾ سڀني نون طبقن ۽ API خاصيتن بابت وڌيڪ سکڻ چاهيو ٿا، صرف منهنجو ايندڙ مضمون پڙهو. اهو توهان کي JDK 8 ۾ سڀني نون طبقن ۽ لڪيل خاصيتن کي سمجهڻ ۾ مدد ڏيندو، جهڙوڪ Arrays.parallelSort ، StampedLock ، ۽ CompletableFuture .
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION