JavaRush /Java Blog /Random-TK /Java 8 gollanmasy. 2-nji bölüm.
ramhead
Dereje

Java 8 gollanmasy. 2-nji bölüm.

Toparda çap edildi

Sene API

Java 8 java.time paketinde düýbünden täze sene we wagt API-lerini öz içine alýar. Täze Sene API Joda-Time kitaphanasy bilen deňeşdirilýär , ýöne birmeňzeş däl. Aşakdaky mysallar täze API-iň iň möhüm böleklerini öz içine alar.
Sagat
Sagat häzirki senä we wagta girmäge mümkinçilik berýär. Sagatlar wagt zolaklaryndan habarly we şonuň üçin häzirki wagty millisekuntda yzyna gaýtarmak üçin System.currentTimeMillis () ýerine ulanylyp bilner. Wagtyň takyklygy “Instant” synpy bilen hem görkezilýär . Dessine miras galan java.util.Date obýektlerini döretmek üçin ulanylyp bilner . Clock clock = Clock.systemDefaultZone(); long millis = clock.millis(); Instant instant = clock.instant(); Date legacyDate = Date.from(instant); // legacy java.util.Date
Wagt guşaklygy
Wagt guşaklygy abstrakt ZoneId bilen görkezilýär . Statistik zawod usullaryny ulanyp, olara aňsatlyk bilen girip bolýar. Wagt guşaklygy dessine we ýerli senäniň we wagtyň arasynda öwrülmegi üçin möhüm bolan offsetleri kesgitleýär. 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
“LocalTime” wagt zolagy bolmazdan wagty görkezýär, mysal üçin 17:30:15. Aşakdaky mysal ýokarda kesgitlenen wagt guşaklygy üçin iki sany ýerli wagt obýektini döredýär. Soňra iki zady deňeşdirýäris we olaryň arasyndaky sagatlaryň we minutlaryň tapawudyny hasaplaýarys. 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” dessine aňsatlaşdyrmak üçin dürli zawod usullary bilen gelýär, şol sanda setir derňewi. 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
“LocalDate” belli bir senäni görkezýär, mysal üçin 2014-03-11. Mysallar üýtgewsiz we “LocalTime” ýaly işleýär. Mysal, günleri, aýlary ýa-da ýyllary goşmak ýa-da aýyrmak arkaly täze senäni nädip hasaplamalydygyny görkezýär. Obýektdäki her bir amalyň täze bir obýekti yzyna gaýtaryp berýändigini ýadyňyzdan çykarmaň. 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” -ni setirden bölmek “LocalTime” -ni derňemek ýaly ýönekeý: 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” maglumat wagtyny görkezýär. Bu, ýokarda berlen senäniň we wagtyň bir nusgasynda. “LocalDateTime” mysallary üýtgewsiz we “LocalTime” we “LocalDate” ýaly işleýär. Gerekli emläk gymmatlyklaryny almak üçin usullary ulanyp bileris: 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 Goşmaça wagt zolagy maglumatlary bilen bilelikde dessine öwrülip biler. Dessine java.util.Date-den miras galan köne görnüşlere aňsatlyk bilen öwrüp bolýar. Instant instant = sylvester .atZone(ZoneId.systemDefault()) .toInstant(); Date legacyDate = Date.from(instant); System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014 Sene wagtyny formatlamak, senäni ýa-da wagty formatlamak ýaly işleýär. Öňünden kesgitlenen sene formatlaryny ulanmagyň ýerine el bilen kesgitlenen formatlary ulanyp bileris. 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-dan tapawutlylykda täze “DateTimeFormatter” üýtgewsiz we sapak howpsuz. Formatlary ýazmagyň sintaksis hakda has giňişleýin maglumat üçin şu ýerde okaň .

Annotasiýa

Java 8-de bellikler gaýtalanýar. Munuň nähili işleýändigini görkezmek üçin bir mysala seredeliň. Başlamak üçin, köp sanly bellikleri saklaýan düşündiriş ýazgysyny kesgitläris: @interface Hints { Hint[] value(); } @Repeatable(Hints.class) @interface Hint { String value(); } Java 8, @Repeatable belligini yglan edip, şol bir görnüşdäki birnäçe bellikleri ulanmaga mümkinçilik berýär. 1-nji wariant: Konteýner düşündirişini (köne mekdep) ulanmak (Java 8, @ Gaýtalanyp boljak düşündiriş yglan edip, şol bir görnüşdäki köp düşündirişleri ulanmaga mümkinçilik berýär .) 1-nji wariant: Annotasiýa konteýnerini (köne mekdep) @Hints({@Hint("hint1"), @Hint("hint2")}) class Person {} 2-nji wariant: Gaýtalanýan bellikleri ulanmak ( täze aýratynlyk) @Hint("hint1") @Hint("hint2") class Person {} Ikinji warianty ulanyp, java düzüjisi @Hint düşündirişini aç-açan düzýär. Bu pikirlenmek arkaly düşündiriş maglumatlary okamak üçin möhümdir. Şahsy synp üçin @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 düşündirişini yglan etmedik bolsak-da , getAnnotation (Hints.class) usuly bilen okap bilersiňiz . Şeýle-de bolsa, has amatly usul , @Hint düşündirişini ulanyp, ähli belliklere girmegi üpjün edýän getAnnotationsByType . Mundan başga-da, Java 8-de düşündirişleriň ulanylyşy iki maksat bilen giňelýär: @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) @interface MyAnnotation {}

Bularyň hemmesi

Java 8 programmirleme okuwym doly. JDK 8-de ähli täze synplar we API aýratynlyklary barada has giňişleýin öwrenmek isleseňiz, indiki makalamy okaň. Bu, “Arrays.parallelSort ” , “StampedLock ” we “CompletableFuture” ýaly JDK 8-de ähli täze synplara we gizlin aýratynlyklara düşünmäge kömek eder .
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION