Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java

Diamond Operator in Java

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java

Sep 18, 2018 Β· 2 min read

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java

Diamond operator aka diamond syntax was introduced in Java 7 as a new feature. Purpose of the diamond operator is to simplify the use of generics when creating an object.

It avoids unchecked warnings in a program as well as reducing generic verbosity by not requiring explicit duplicate specification of parameter types.

Raw Types prior to Java 5

Before Java 5, the collections API supports only raw types. There was no way for type arguments be parameterized when constructing a collection.

The above code runs just fine, but suppose you also have the following:

Now we run i n to trouble at run-time, because the list contains something that isn’t an instanceof String.

Presumably, if you want names to contain only String, you could perhaps still use a raw type and manually check every add yourself, and then manually cast to String every item from names.

Generics from Java 5

Generics were introduced β€” which allowed us to parameterize the type arguments for classes,

Raw types refer to using a generic type without specifying a type parameter. For example, List is a raw type, while List is a parameterized type.

When generics were introduced in JDK 1.5, raw types were retained only to maintain backwards compatibility with older versions of Java.

At this point, we have to specify the parameterized type in the constructor, which can be somewhat unreadable:

Even though the compiler still allows us to use raw types in the constructor,

it will prompt us with a warning message:

ArrayList is a raw type. References to generic type ArrayList should be parameterized

Diamond Operator from Java 7

With Java 7, the diamond operator makes this shorter and simpler. It also adds type inference and reduces the verbosity in the assignments β€” when using generics:

It becomes even more useful with more complex data types, such as a List of Map objects as follows:

Simply put, the diamond operator adds the type inference feature to the compiler and reduces the verbosity in the assignments introduced with generics.

Generics allow us to keep the safety of generics with almost the same effort as using the raw type.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Ρ‹Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Java-компилятором

1. БинтаксичСский сахар

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ Π»ΡŽΠ±ΡΡ‚, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ слоТный ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠΉ строк, ΠΈ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ этом ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ. А Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языков ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠΌ Π² этом.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Java сдСлали всС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ· Java всю Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. Если Π² C++ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π΅ΡΡΡ‚ΡŒΡŽ способами, Π² Java Ρ‡Π°Ρ‰Π΅ всСго это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ способом.

Но такая унификация Π½Π΅ нравится Π½ΠΈ Java-программистам, Π½ΠΈ создатСлям Java. И ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Тизнь ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ рСбятам Π²Ρ€ΠΎΠ΄Π΅ нас с Π²Π°ΠΌΠΈ.

Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

ВмСсто Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊ слСва Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ справа. А ΡƒΠΌΠ½Ρ‹ΠΉ Java-компилятор Π½Π° основС ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° сам сгСнСрируСт Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ синтаксичСский сахар.

2. Π’Ρ‹Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ – var

Π’ Java 11 компилятор стал Π΅Ρ‰Π΅ ΡƒΠΌΠ½Π΅Π΅ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ создаваСмой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ значСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅ΠΉ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚. Выглядит это Π² ΠΊΠΎΠ΄Π΅ Ρ‚Π°ΠΊ:

Π“Π΄Π΅ имя β€” это имя Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” Π΅Π΅ стартовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° var β€” это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ΠΈΠΏ Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ имя Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ значСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅ΠΉ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚.

Как этот ΠΊΠΎΠ΄ Π²ΠΈΠ΄ΠΈΠΌ ΠΌΡ‹Π§Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΡ‚ компилятор

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ сам опрСдСляСт ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π΅Ρ‰Π΅ говорят, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° основС значСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅ΠΉ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚.

НСмало ΠΊΠΎΠΏΠΈΠΉ Π±Ρ‹Π»ΠΎ сломлСно Π² баталиях программистов Π½Π° Ρ‚Π΅ΠΌΡƒ Ρ‚ΠΎΠ³ΠΎ, стоит Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² язык ΠΈΠ»ΠΈ Π½Π΅Ρ‚. МногиС боялись, Ρ‡Ρ‚ΠΎ использованиСм var Π½Π°Ρ‡Π½ΡƒΡ‚ Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ, ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° сильно снизится.

Доля истины Π² этом Π΅ΡΡ‚ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var Ρ‚Π°ΠΌ, Π³Π΄Π΅ это ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. НапримСр, этих Π² Π΄Π²ΡƒΡ… случаях:

Π‘Π»ΡƒΡ‡Π°ΠΉ 1: глядя Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ сразу ясно, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

КодПояснСниС
Π£ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏ InputStream
Π£ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏ String
КодПояснСниС
Π’ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ слоТно
Π’ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ слоТно

Π‘Π»ΡƒΡ‡Π°ΠΉ 2: Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ Π²Π°ΠΆΠ΅Π½ для понимания ΠΊΠΎΠ΄Π°

Часто Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ситуации, ΠΊΠΎΠ³Π΄Π° Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ – пСрСмСнная просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ. ИспользованиС var Ρ‚ΡƒΡ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ сниТаСт ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°:

Золотая сСрСдина

БСйчас ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Ρ‚Ρ€ΠΈ способа записи ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ΄Π°. ИспользованиС var Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ.

ΠšΠΎΠ΄ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
Блишком ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ
ИдСально
Блишком ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ

Когда ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π² строкС 1 ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ Π² строкС 2, ΠΌΡ‹ Π·Π° счСт ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ( headerInfo ) Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Ρƒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ читаСмости. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ясно, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π» Π½Π΅ просто ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”Π΅Π»ΡŒΡ„ΠΈΠ½, ΠΌΠΎΠ½Π΅Ρ‚Π° ΠΈ Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

Π Π΅Π»ΠΈΠ· Java 7 Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΉΡ‚ΠΈ 28 Июля.
Π’ связи с этой Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π°Ρ‚ΠΎΠΉ, я Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ нас всСх ΠΆΠ΄Π΅Ρ‚. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² послСднСС врСмя Π² основном занимаюсь Scala, Ρ‚ΠΎ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ языковыС Ρ„ΠΈΡ‡ΠΈ Π² Java Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π» ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ³ΠΎ внимания (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° тусовках java-программистов, плюс поглядывал Ρ‡Ρ‚ΠΎ ΠΏΠΈΡˆΡƒΡ‚ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π±Π»ΠΎΠ³Π°Ρ… Тависты).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java

ВСхничСских Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π² ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… самоС интСрСсноС мСсто Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠœΠΎΠ½Π΅Ρ‚Π° (Project Coin)».

Он содСрТит Π² сСбС нСбольшиС (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ с ΠΈΡ… Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния) измСнСния Π² языкС:

— Strings in switch
— Binary integral literals and underscores in numeric literals
— Multi-catch and more precise rethrow
— Improved type inference for generic instance creation (diamond)
— try-with-resources statement
— Simplified varargs method invocation

Π’ этом постС я Π½Π°Π²Π΅Ρ€Π½ΠΎ Π½Π΅ смогу Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎ всС Ρ„ΠΈΡ‡ΠΈ, ΠΏΠΎΠΊΠ° Ρ…ΠΎΡ‚Π΅Π» ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ интСрСсныС Π½Π° ΠΌΠΎΠΉ взгляд ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹.

Improved type inference for generic instance creation (diamond)

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ diamond (Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚, Π°Π»ΠΌΠ°Π·). Π”ΡƒΠΌΠ°ΡŽ называСтся Ρ‚Π°ΠΊ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° камСнь: <>.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° часто приводят Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

// Java 7 List a = new ArrayList<>(); // Π΄ΠΎ Java 7 List b= new ArrayList ();

Π­Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ красиво, Ρ‚.ΠΊ. ΠΌΡ‹ смогли ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°. Но Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос, Ρ‡Π΅ΠΌ это Π»ΡƒΡ‡ΡˆΠ΅, Ссли Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅? Π’ΠΎΡ‚ Ρ‚Π°ΠΊ:

// Π² Java 7 List a = new ArrayList<>(); // Π΄ΠΎ Java 7 List b = new ArrayList();

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сырой Ρ‚ΠΈΠΏ (raw types) ΠΈ поэтому Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ программистам ΠΏΠΎ «ΠΌΠΎΡ€Π°Π»ΡŒΠ½ΠΎ-этичСским» сообраТСниям Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π½Π΅ нравится.
Π₯отя ΠΎΠ΄ΠΈΠ½ java-программист Π΄Π°ΠΆΠ΅ Π½Π΅ полСнился ΠΈ сравнил ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄: jdk-7-diamond-operator.
Он ΠΏΠΎΠΊΠ°Π·Π°Π» Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΎΡ‚ использования Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚Π° Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅ Π½Π΅Ρ‚, Ρ‚.ΠΊ. вСсь этот сахар ΠΏΡ€ΠΈ компиляции ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚.

МнС каТСтся, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ польза, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

List a = new ArrayList<>(); // Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠΊΠ°Ρ‚ΠΈΡ‚, хотя ΠΈ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ. List b = new ArrayList(a); // Π’Π°ΠΊΠΎΠΉ ΡƒΠΆΠ΅ отрубится компилятором, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. List c = new ArrayList<>(a);

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, наш Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚ΠΈΠΊ автоматичСски Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Ρ‚ΠΈΠΏ. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΉΠΌΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ конструктор ΠΎΡ‚ списка чисСл. ΠŸΠΎΡ‚ΠΎΠΌ компилятор ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ вмСсто этого ΠΏΠΎΠ΄Π°ΡŽΡ‚ список строк ΠΈ создаст ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции.

try-with-resource

Появился Π½ΠΎΠ²Ρ‹ΠΉ интСрфСйс AutoCloseable. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π½Π΅ Π³Π΄Π΅-Ρ‚ΠΎ Ρ‚Π°ΠΌ Π² io (ΠΊΠ°ΠΊ Closeable), Π° Π² самом java.lang!

Π­Ρ‚ΠΎΡ‚ интСрфСйс Π±Ρ‹Π» подсунут Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Π½Π°Π΄ Closeable (Closeable extends AutoCloseable).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, автоматичСски всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ (_Stream) ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ/писатСли(Reader/Writer) становятся Ρ‚Π°ΠΊΠΆΠ΅ AutoCloseable.
Π’ AutoCloseable Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ void close() throws Exception.

ИдСя Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ AutoCloseable ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Java 7 ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ рСсурсы) Π² скобочках послС try, Ρ‚ΠΎ ΠΎΠ½ΠΈ всСгда автоматичСски Π·Π°ΠΊΡ€ΠΎΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· try Π±Π»ΠΎΠΊΠ°.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ приводят ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’ Ρ‡Π΅ΠΌ смысл ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° diamond Π² Java 7?

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ diamond Π² java 7 позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Java 5/6, я ΠΌΠΎΠ³Ρƒ просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

ΠΌΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ стирания Ρ‚ΠΈΠΏΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅. (Π’ любом случаС generic удаляСтся Π²ΠΎ врСмя выполнСния).

Π·Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²ΠΎΠ·ΠΈΡ‚ΡŒΡΡ с Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚ΠΎΠΌ? КакиС Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ / Ρ‚ΠΈΠΏ бСзопасности это позволяСт? Если ΠΎΠ½ Π½Π΅ Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ? Насколько я это понимаю? концСпция ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Π°?

7 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ для обСспСчСния Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции ΠΎΡ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… дСйствий. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использованиС Ρ‚ΠΈΠΏΠ° raw ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ эту Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²ΠΎ врСмя выполнСния. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сырыС Ρ‚ΠΈΠΏΡ‹.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сырыС Ρ‚ΠΈΠΏΡ‹ (Π±Π΅Π· <> ) нСльзя Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Когда Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· прСимущСства ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠ° Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ². Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния языка Java. ΠΎΠ½ΠΈ Π½Π΅ просто ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ конструкторам no-arg Collection s!

вашС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСгка искаТСно. Алмазный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€-Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ функция, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ. Π˜ΠΌΠ΅Π΅Ρ‚ смысл ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Ρ‚ΠΈΠΏ, Π½ΠΎ просто Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ снова с ΠΏΡ€Π°Π²ΠΎΠΉ стороны. Π‘ΡƒΡ…ΠΎΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ.

Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ всС ΠΏΡƒΡ… ΠΎΠ± ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ². Π’Ρ‹ ΠΏΡ€Π°Π²Ρ‹, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ удаляСтся Π²ΠΎ врСмя выполнСния, Π½ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· списка с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ°, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ объявлСнии списка, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ потСряСт всС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ случаСв, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊ исходному Ρ‚ΠΈΠΏΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ слоТным ΠΈ привСсти ΠΊ ClassCastException.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ List list = new LinkedList() ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ прСдупрСТдСния rawtype.

эта строка Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ [unchecked]:

Π˜Ρ‚Π°ΠΊ, вопрос трансформируСтся: ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ [unchecked] Π½Π΅ подавляСтся автоматичСски Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС создания Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ?

Π― Π΄ΡƒΠΌΠ°ΡŽ, это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Ρ‡Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ <> характСристика.

UPD: я Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» Π±Ρ‹ бСспорядок, Ссли Π±Ρ‹ Π·Π°ΠΊΠΎΠ½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сырыС Ρ‚ΠΈΠΏΡ‹ «Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ».

тСорСтичСски ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ diamond позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ (ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ) ΠΊΠΎΠ΄, сохраняя ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚ΠΈΠΏΠ°. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это просто Π΄Π²Π° Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Ρ… символа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π°ΡŽΡ‚. ΠŸΠΎΡ‡Π΅ΠΌΡƒ?

IMHO, имСя ясный ΠΈ простой способ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ источник ΠΊΠ°ΠΊ Java 7, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ρ‡Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ странныС Π²Π΅Ρ‰ΠΈ. Π’ Ρ‚Π°ΠΊΠΎΠΌ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ.

кстати., Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это слСдуСт Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ компиляции. Java-вСрсия Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Ρ„Π°ΠΉΠ»Π°, Π±Π΅Π· ΠΎΠΏΡ†ΠΈΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ

ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ (Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТноС, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΠΏΡ€ΠΈΡ‡ΡƒΠ΄Π»ΠΈΠ²Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов). Π­Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π±Ρ‹ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ источники, написанныС для Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий Java. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π±Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «ΠΌΠΎΠ΄ΡƒΠ»ΡŒ») ΠΈΠ»ΠΈ ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (нСсколько Π½Π΅ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π½Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π΅Ρ‰Π΅) Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ совмСстимости.

Π˜Ρ‚Π°ΠΊ, Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, Π° diamond operator позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ способом Π±Π΅Π· Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ повторСния.

всС сказанноС Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… допустимо, Π½ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ допустимыми IMHO. Если ΠΎΠ΄ΠΈΠ½ провСряСт Π³ΡƒΠ°Π²Ρ‹ ΠΈ особСнно связанныС с коллСкциями Π²Π΅Ρ‰ΠΈ, Ρ‚ΠΎ ΠΆΠ΅ самоС Π±Ρ‹Π»ΠΎ сдСлано со статичСскими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π•. Π“. списки.newArrayList () Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ

ΠΈΠ»ΠΈ со статичСским ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ

Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π±Ρ‹ ΠΎΠ½ΠΈ пошли Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° diamond ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ выводится с Π»Π΅Π²ΠΎΠΉ стороны выраТСния ΠΈΠ»ΠΈ Ссли Ρ‚ΠΈΠΏ Π»Π΅Π²ΠΎΠΉ стороны выводился с ΠΏΡ€Π°Π²ΠΎΠΉ стороны. ПослСднСС происходит Π² Scala.

ΠΏΡƒΠ½ΠΊΡ‚ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π”ΠΈΠ°ΠΌΠ°Π½Ρ‚Π° просто ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄Π° объявляя Ρ€ΠΎΠ΄ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ влияния Π½Π° врСмя выполнСния Π²ΠΎΠΎΠ±Ρ‰Π΅.

СдинствСнная Ρ€Π°Π·Π½ΠΈΡ†Π°, Ссли Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π² Java 5 ΠΈ 6,

— Π­Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ @SuppressWarnings(«unchecked») Π΄ΠΎ list (Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ). Насколько я понимаю, Π°Π»ΠΌΠ°Π·Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ пытаСтся ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Π•ΠΌΡƒ Π½Π΅Ρ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° выполнСния Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ² Π² всС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ВозмоТности Java β€” ΠΎΡ‚ Java 8 Π΄ΠΎ Java 17

Π‘ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° появлСния Π² 1995 Π³ΠΎΠ΄Ρƒ Π΄ΠΎ сСгодняшнСго дня Π² Java ΠΌΠ½ΠΎΠ³ΠΎΠ΅ измСнилось. Java 8 Π±Ρ‹Π»Π° Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ выпуском, Π²Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΠΌ Java Π½Π° ΠΏΡŒΠ΅Π΄Π΅ΡΡ‚Π°Π» Π»ΡƒΡ‡ΡˆΠΈΡ… языков программирования.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ сопровоТдаСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° GitHub.

Java 8

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния Π² выпускС Java 8:

Лямбда-выраТСния ΠΈ Stream API

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Лямбда-выраТСния ΠΈ Stream API

Π’ Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ лямбды ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариях.

ΠœΠΈΡ€ Π΄ΠΎ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Допустим Ρƒ нас Π΅ΡΡ‚ΡŒ автосалон. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ всСй Π±ΡƒΠΌΠ°ΠΆΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС доступныС Π² настоящСС врСмя Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ с ΠΏΡ€ΠΎΠ±Π΅Π³ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΅ 50 000 ΠΊΠΌ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Π½Π°ΠΈΠ²Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

ИспользованиС ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ лямбда-выраТСния

Π£ нас Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Наш ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ…ΠΎΡ‡Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ всС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ ΠΏΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ критСриям.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ использовали API ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ лямбда-выраТСниях ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Бсылка Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄

Π‘Π΅Π· ссылки Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄

Π£ нас всС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ автосалон, ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ всС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅. Для этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылку Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄.

Бсылка Π½Π° статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄

Бсылка Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Бсылка Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра для Ρ‚ΠΈΠΏΠ°

Бсылка Π½Π° конструктор

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартного Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° toString() Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° car.

ИспользованиС ссылки Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ситуации ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылку Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄:

ΠœΡ‹ снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ toString() ΠΏΠΎ ссылкС Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄. ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, насколько ΠΎΠ½ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Π΅Π΅ ΠΈ Π»Π΅Π³Ρ‡Π΅ читаСтся.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ справочникС ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, посмотритС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ использования

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ выглядит наш ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚:

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠœΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΡŒ интСрфСйса. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ date, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠœΡ‹ добавляСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π²ΠΎ всСх клиСнтских классах. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ выдаст ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

ПослС добавлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ интСрфСйса наш компилятор Π²Ρ‹Π΄Π°Π²Π°Π» ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠœΡ‹ собираСмся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

Π’Π²ΠΎΠ΄ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова default позволяСт Π½Π°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ интСрфСйса. Π’Π΅ΠΏΠ΅Ρ€ΡŒ наш класс LoggingImplementation Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с ошибкой компилятора, Π΄Π°ΠΆΠ΅ Ссли ΠΌΡ‹ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Аннотации Ρ‚ΠΈΠΏΠΎΠ²

ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Π² throw ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅

Π’Π°ΠΊΠΈΠ΅ инструмСнты, ΠΊΠ°ΠΊ IDE, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ‚Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ эти Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΈ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ прСдупрСТдСния ΠΈΠ»ΠΈ ошибки Π½Π° основС Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ наша локальная пСрСмСнная Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null :

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ @NotNull ΠΈ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL.

Π’Ρ‹Π·ΠΎΠ² конструктора

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой ArrayList :

Π­Ρ‚ΠΎ прСкрасный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² конструкторС. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ пуст Π»ΠΈ список массивов.

Generic Ρ‚ΠΈΠΏ

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Ρ„Π»Π΅ΠΊΡΠΈΡŽ для опрСдСлСния Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· элСмСнтов Π² спискС являСтся допустимым адрСсом элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± аннотациях Ρ‚ΠΈΠΏΠΎΠ² см. Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ нСсколько Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ классС.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅ΠΉΡΡ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ собираСмся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΡƒΡŽΡΡ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ @Notify :

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это фиктивная аннотация Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для дСмонстрационных Ρ†Π΅Π»Π΅ΠΉ. Π­Ρ‚Π° аннотация Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ элСктронныС письма Π±Π΅Π· процСссора Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΅Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ отправляСт элСктронныС письма.

ИспользованиС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΡƒΡŽΡΡ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ нСсколько Ρ€Π°Π· ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ конструкции:

Π£ нас Π΅ΡΡ‚ΡŒ собствСнный класс ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пытаСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ. Наши Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΊ этому классу говорят, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹ΡΡ‹Π»Π°Ρ‚ΡŒ увСдомлСния Π² Π΄Π²ΡƒΡ… элСктронных ΠΏΠΈΡΡŒΠΌΠ°Ρ…, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ это ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ аннотациях, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Java 9

Π’ Java 9 прСдставлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

БистСма ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Java

Diamond ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ для Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классов

Private ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² интСрфСйсах

БистСма ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Java

ΠŸΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ модуля Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ нСсколько Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²:

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° Ρ€Π΅Ρ„Π»Π΅ΠΊΡΠΈΡŽ

НС вдаваясь Π² подробности, Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ создании модуля.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ IntelliJ IDEA

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠœΡ‹ создадим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Hello World, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Β«HelloΒ» ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ модуля ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти Β«World!Β».

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π² IntelliJ IDEA, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. IntelliJ IDEA ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Java Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ IntelliJ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ java. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΠΉΠΌΠΎΠ½Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ javaΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ нашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ модуля

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово module с ΠΈΠΌΠ΅Π½Π΅ΠΌ модуля для ссылки Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов:

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ нашСго Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ модуля

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ систСмС Java, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Try-with-resources

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ рСсурса Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ рСсурса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ try-with-resources

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°. Π’ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π΅ ошибка. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try-with-resources появился Π² Java 7. Π‘ΠΌ. Java SE 7 Features and Enhancements.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования BufferedReader для чтСния строки:

Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° try ΠΌΡ‹ Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ наш Ρ€Π°Π½Π΅Π΅ созданной BufferedReader Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ наш reader всСгда закрываСтся.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ try-with-resources, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Diamond ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ для Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классов

Π”ΠΎ Java 9 ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€ΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (<>) Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ классС.

Π’ Java 9 эта ошибка компилятора большС Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚.

Private ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² интСрфСйсах

ΠœΡ‹ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² интСрфСйсах.

Как Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²? ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с классами ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ private ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ это Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π² нашСм случаС?

Π§Ρ‚ΠΎ касаСтся Java 9, Π΄Π°. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ private ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ интСрфСйсов.

ИспользованиС private ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² интСрфСйсС

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΈΠΌΠ΅Π½.

Для интСрфСйса, содСрТащСго эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹, Ссли ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ прСдоставляСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ рСсурсов:

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ BufferedReader для чтСния Ρ„Π°ΠΉΠ»Π°, содСрТащСго ΠΈΠΌΠ΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ дСлимся с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш ΠΊΠΎΠ΄ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ для чтСния ΠΈ сохранСния ΠΈΠΌΠ΅Π½ Π² List Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ являСтся private, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π² нашСм интСрфСйсС.

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, основным прСимущСством этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Java 9 являСтся Π»ΡƒΡ‡ΡˆΠ°Ρ инкапсуляция ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°.

Java 10

Π’Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Java всСгда Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° явноС ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’ΠΈΠΏ var позволяСт Π½Π°ΠΌ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π² Π»Π΅Π²ΠΎΠΉ части Π½Π°ΡˆΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ способ

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ людСй, ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС Π² ΠΎΠ΄ΠΈΠ½ список, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ этот список Π² Ρ†ΠΈΠΊΠ»Π΅ for ΠΈ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ имя ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ:

Π­Ρ‚ΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π² Java. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ явныС Ρ‚ΠΈΠΏΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Π΅Π³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄.

НСявный Ρ‚ΠΈΠΏ с var

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ нСсколько Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Ρ‚ΠΈΠΏΠ° var для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΡ… для опрСдСлСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ список с Ρ€ΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π΅ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ см. Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Java 11

Π’Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² лямбда-выраТСниях

Π’ Java 11 внСсСны ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² Ρ€Π°Π½Π΅Π΅ упомянутый Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ var Π²Π½ΡƒΡ‚Ρ€ΠΈ лямбда-выраТСния.

ΠœΡ‹ снова создадим нСсколько Person, собСрСм ΠΈΡ… Π² список ΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅ΠΌ записи, Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π±ΡƒΠΊΠ²Ρ‹ Β«Π°Β»:

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° filter() ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ var для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ вмСсто явного упоминания Ρ‚ΠΈΠΏΠ°.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ var ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² лямбда-выраТСниях Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ для ΠΎΠ±ΠΎΠΈΡ… случаСв.

Java 14

Switch выраТСния

Switch выраТСния ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π½Π°ΠΌ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ break Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ case Π±Π»ΠΎΠΊΠ°. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ нСсколько способов использования Switch Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ способ c ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Switch

Π£ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ мСсяц, Π° ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ количСство Π΄Π½Π΅ΠΉ Π² этом мСсяцС.

Нам Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ помСстили ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ case Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ условия послС совпадСния с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

ИспользованиС Switch Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

ΠœΡ‹ рассмотрим Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ мСсяц ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ количСство Π΄Π½Π΅ΠΉ Π² этом мСсяцС:

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠΎΠ΄, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово yield

Π›ΠΎΠ³ΠΈΠΊΠ° Π²Π½ΡƒΡ‚Ρ€ΠΈ case Π±Π»ΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, Ρ‡Π΅ΠΌ просто Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ значСния. НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π»ΠΎΠ³, ΠΊΠ°ΠΊΠΎΠΉ мСсяц Π½Π°ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ:

Π’ многострочном Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово yield для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° значСния ΠΈΠ· case Π±Π»ΠΎΠΊΠ°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎΠ± использовании Switch Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Java 15

ВСкстовыС Π±Π»ΠΎΠΊΠΈ

ВСкстовый Π±Π»ΠΎΠΊ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строковых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Начиная с Java 15, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ String, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ нСсколько строк, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкст.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π±Π΅Π· использования тСкстовых Π±Π»ΠΎΠΊΠΎΠ²

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅. ΠœΡ‹ сохраняСм шаблон элСктронного письма Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

ΠœΡ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π°ΡˆΡƒ строку, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅. Нам Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ тСкста Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ всС строки Π² ΠΎΠ΄Π½Ρƒ строку.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования тСкстовых Π±Π»ΠΎΠΊΠΎΠ²

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ HTML-шаблона для элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ элСктронного письма с простым Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ HTML. На этот Ρ€Π°Π· ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСкстовый Π±Π»ΠΎΠΊ:

Π•ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании тСкстового Π±Π»ΠΎΠΊΠ°. Нам Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ помСстили тСкст Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку послС ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΠΈΠ½Π°Ρ‡Π΅ наш компилятор выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ тСкстовых Π±Π»ΠΎΠΊΠ°Ρ…, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Java 16

БопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ instanceof

БопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ instanceof позволяСт Π½Π°ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² строку ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ if-else Π±Π»ΠΎΠΊΠ° Π±Π΅Π· явного прСобразования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π±Π΅Π· сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ

Наш Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ расчСта Ρ†Π΅Π½ зависит ΠΎΡ‚ экзСмпляра автомобиля:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ транспортноС срСдство Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ if-else Π±Π»ΠΎΠΊΠ°. Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, это Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ шаблонного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ славится Java.

ИспользованиС сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ шаблонного ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π•Π΅ Π²ΠΈΠ΄Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ сопоставлСнии с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ instanceof см. Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Записи

Бколько POJO (Plain Old Java Objects) Π²Ρ‹ написали?

Π§Ρ‚ΠΎ ΠΆ, ΠΌΠΎΠ³Ρƒ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π·Π° сСбя: «Блишком ΠΌΠ½ΠΎΠ³ΠΎ!Β».

Π£ Java плохая рСпутация написания шаблонного ΠΊΠΎΠ΄Π°. Lombok ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Π°Ρ…, сСттСрах ΠΈ Ρ‚. Π΄. Π’ Java 16 Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ появились Records (записи) для удалСния большого количСства шаблонного ΠΊΠΎΠ΄Π°.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ POJO

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ POJO класса Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² Java 16 Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ записи:

Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ 50 строк ΠΊΠΎΠ΄Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° свойства. IDE сгСнСрировала этот ΠΊΠΎΠ΄, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ сущСствуСт ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Record

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ записи (Record) vehicle с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ двумя свойствами ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ всСго Π² ΠΎΠ΄Π½ΠΎΠΉ строкС:

Π’ этой строкС Π΅ΡΡ‚ΡŒ всС Ρ‚Π΅ ΠΆΠ΅ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹, сСттСры, конструкторы ΠΈ Ρ‚. Π΄., Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ класс Record ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся final, ΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ этому ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡ‚ΡŒΡΡ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ класс Record, Π½ΠΎ для нас доступно Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ классах записи, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Java 17

Sealed классы

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ final Π² классС Π½Π΅ позволяСт Π½ΠΈΠΊΠΎΠΌΡƒ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. А ΠΊΠ°ΠΊ насчСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ класс, Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… классов?

ВСрнСмся Π² автосалон. ΠœΡ‹ Ρ‚Π°ΠΊ гордимся нашим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ расчСта Ρ†Π΅Π½, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ Π΅Π³ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ. Однако ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Π»ΠΈΠ±ΠΎ использовал нашС прСдставлСниС Vehicle. Оно справСдливо Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для нашСго бизнСса. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Нам Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ класс, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

ИмСнно здСсь Π² ΠΈΠ³Ρ€Ρƒ вступаСт Java 17 с Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΌΠΈ (Sealed) классами. Π—Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΉ класс позволяСт Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ класс final для всСх, ΠΊΡ€ΠΎΠΌΠ΅ явно упомянутых классов.

Π—Π΄Π΅ΡΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‰ΡŒ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½ΠΎΠ³ΠΎ класса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ:

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ подклассы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½ΠΎΠΌΡƒ классу Π²ΠΎ врСмя компиляции.

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ подклассы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΉ класс

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ подклассы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²:

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ подклассы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Java ΠΌΠΎΠ΄ΡƒΠ»Π΅.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹Ρ… классах ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *