рддреНрдпрд╛рдЧ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдИ рджреА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ
рднрд╛рд░рддреАрдпреЛрдВ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐
null
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕ рд╕рдордп рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдЖрд▓рд╕реНрдп рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЖрдИрдбреАрдИ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓рд╛ рдХреЛрдИ рд▓реЗрдЦ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдирд╛ рдерд╛ред рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рддрдХрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдлрд┐рд░ рднреА рдореИрдВ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ рд╡реНрдпрд╛рдкрдХ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рдореЗрдВ рдиреНрдпреВрдирддрдо рдкрд╛рда рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЫрд╡рд┐рдпрд╛рдВ рд╣реЛрдВрдЧреАред
рджреВрд╕рд░реЗ, рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА IntelliJ IDEA рдХреЛ рд╕рдорд░реНрдкрд┐рдд
рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ tr1cks рд╣реИ , рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдордЬрдмреВрдд рдзрд╛рд░рдгрд╛ рдХреЛ рдкреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐
IDEA рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рдПрдХреНрд▓рд┐рдкреНрд╕ рдЧрд░реАрдмреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ (рдЬреЛ рдХрд┐ рдПрдХ рд╕рдВрдХреЗрдд рдмрди рдЧрдпрд╛ рд╣реИ)ред рд╕рдВрддреБрд▓рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЧреНрд░рд╣рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред
рдореИрдВ FindBugs рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдиреЛрдЯреЗрд╢рди (
JSR 305 рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдмрдВрдзрди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг (рдкреНрд░рд╢рдВрд╕рдХреЛрдВ
org.eclipse.jdt.annotation.*
рдФрд░
org.jetbrains.annotations.*
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
org.eclipse.jdt.annotation.*
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╡реЗ рдорд╛рд╡реЗрди рд╕реЗрдВрдЯреНрд░рд▓ рдореЗрдВ
рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред рдорд╛рд╡реЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ
<dependencies/>
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
<dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>3.0.0</version> </dependency>
рдмрд╕, рдореИрдВ рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ
@Nonnull public String getName() {
рдФрд░
public @Nonnull String getName() {
- рдпреЗ рджреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорддреБрд▓реНрдп рдирд┐рд░реНрдорд╛рдг рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдмрд╛рдИрдЯреЗрдХреЛрдб рдХреЗ рджреЛ рдкреНрд░рдХрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ 1 рдмрд╛рдЗрдЯ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╡реИрд╕реЗ, рдЖрдк рдХреНрдпреЛрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ?)
рдЧреНрд░рд╣рдг
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рд╕рднреА рдХреЛ рдЧреНрд░рд╣рдг 4.4 (рд▓реВрдирд╛) рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдпрджрд┐ рдореЗрд░реА рдореЗрдореЛрд░реА рдореБрдЭреЗ рд╕рд╣реА рдХрд╛рдо рдХрд░рддреА рд╣реИ, рддреЛ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 3.8 (рдФрд░ рд╕рдВрднрд╡рддрдГ рдкрд╣рд▓реЗ) рдореЗрдВ рдореМрдЬреВрдж рдереАред
рд╕рдорд╛рдпреЛрдЬрди
рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдирд┐рджрд╛рди
рдпрджрд┐ рдирд┐рджрд╛рди рдЧрд▓рдд рд╣реИ, рддреЛ рдХреБрдЫ рд▓реЛрдЧ рдЦреБрд╢ рд╣реЛрдВрдЧреЗред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ: "рдбреЙрдХреНрдЯрд░, рдЖрдк рдирд╢реЗ рдореЗрдВ рдереЗ рдФрд░ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд░рдХреНрдд рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдерд╛!"
рд╕рдорд╕реНрдпрд╛
рдЪрд┐рддреНрд░ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╣рдг рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдХрд┐ (рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ), рдлрд╝реАрд▓реНрдб
field
hashCode()
рдХреЙрд▓ рдХреЗ рд╕рдордп
null
рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА:
рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо
@SuppressWarnings("null")
рд╕рд╛рде рдкреВрд░реА рд╡рд┐рдзрд┐ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╢рдХреНрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХреЛ рд╢реВрдиреНрдп рдХрд░ рджреЗрдЧрд╛ред
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб реж
assert
рдЬреЛрдбрд╝реЗрдВ:
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб 1
рд▓рдВрдмрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИред рдлрд╝реАрд▓реНрдб рдорд╛рди рдХреЛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдореЗрдВ
@Nonnull
, рдЗрд╕реЗ
@Nonnull
рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ:
рдиреБрдХрд╕рд╛рди
рдЬрд╛рд╡рд╛ 1.8 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдорд░реНрдерд┐рдд рд╣реИ -
рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╢рди (
JSR 308 рджреЗрдЦреЗрдВ) - рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ
@Target
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред FindBugs рдПрдиреЛрдЯреЗрд╢рди рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк
4.4 рд╕рдорд╛рд╡реЗрд╢реА (рд▓реВрдирд╛) рдФрд░ рдЬрд╛рд╡рд╛ 1.8 рддрдХ рдЧреНрд░рд╣рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
рдлрд╛рдЗрдВрдбрдмрдЧреНрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП
null
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (
рдмрдЧ # 435805 )ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреНрд░рд╣рдг
4.5 (рдордВрдЧрд▓) рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред
рдШрд░ рдкрдврд╝рдиреЗ
рдЖрдИрдбрд┐рдпрд╛
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбреАрдИрдП,
null
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдордп рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ (
рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдФрд░
@ рдиреЛрдЯрдирд▓ / @ рдирд┐рдмрд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ )ред
рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдкрд░реНрдпрд╛рд╡рд░рдг рддреБрд░рдВрдд "рдЖрдЙрдЯ рдСрдл рдж рдмреЙрдХреНрд╕" рдЬреЗрдПрд╕рдЖрд░ 305 рд╕рд╣рд┐рдд рдХрдИ рдЙрдкрдпреБрдХреНрдд рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ:
рдХреЗрд╡рд▓ рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐, рдЧреНрд░рд╣рдг рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреВрд░реЗ рдкреИрдХреЗрдЬ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ (рдЬреИрд╕реЗ
@NonNullByDefault
рдпрд╛
@ParametersAreNonnullByDefault
) рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдЕрджреНрдпрддрди
рдЕрд╕реЗрдВрдмрд▓реА 138.1372 (
IDEA-125281 ),
@ParametersAreNonnullByDefault
рдФрд░ рдкреИрдХреЗрдЬ рд╕реНрддрд░ рдкрд░
@ParametersAreNullableByDefault
рд╕реЗ
@ParametersAreNullableByDefault
рд╣реЛрдиреЗ рдХреЛ рдорд╛рдиреНрдпрддрд╛ рджреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (
Borz рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж) рдореЗрдВ рдХрд╣реАрдВ рднреА рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ IDEA 13.1.6 (135.1306 рдХрд╛ рдирд┐рд░реНрдорд╛рдг) рдореЗрдВ рдореМрдЬреВрдж рд╣реИред
NetBeans
рдиреЗрдЯрдмреАрдиреНрд╕ рдиреЗ 7.3 рдХреЗ рдмрд╛рдж рд╕реЗ
null
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИ, рдЖрдЧреЗ рджреЗрдЦреЗрдВред
рдЕрдВрдЧреНрд░реЗрдЬреА рд▓реЗрдЦ ред
рдЯрд┐рдкреНрдкрдгреА
рдпрджрд┐ рдЖрдк рди рдХреЗрд╡рд▓ IDEs, рдмрд▓реНрдХрд┐ FindBugs рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╡рд╛рдкрд╕реА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдХреЛ рди рдХреЗрд╡рд▓
@Nullable
рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд▓реНрдХрд┐
@CheckForNull
рд░реВрдк рдореЗрдВ рднреА - FindBugs рдХреЗрд╡рд▓ рддрднреА рдЗрд╕реЗ "рд╢рд╛рдВрдд" рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдпрд╣
@CheckForNull
рджреЗрдЦрддрд╛ рд╣реИред
рдЕрдЪреНрдЫрд╛ рдмреЛрдирд╕ nishtyaki рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ
рдпрд╣ рд╡рд┐рд╖рдп рд╕реЗ рдПрдХ рдЧреАрддрд╛рддреНрдордХ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддрддреНрдХрд╛рд▓ рд▓рд╛рдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдХреНрд╕ рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рд╢реБрд░реВрдЖрддред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЗрд╕рдиреЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред
рдПрдХ рдмрд╛рд░ рдПрдХ рд╕рдордп рдореЗрдВ рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╣реБрдП рдЬреЛ рдЧрд┐рд░реЗ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЪрддреБрд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреЗ рдЧрдП рдереЗред рд╣рд╛рдВ, рдЖрдк рдЧрд▓рдд рдирд╣реАрдВ рдереЗ, рдпрд╣ рдЬреБрдиреАрдд 3 рд╣реИ:
public void test() throws Exception { final Calendar calendar = myVeryCleverNonStandardApiCall(); final int year = calendar.get(Calendar.YEAR); assertEquals(1997, year); assertEquals("1.1", System.getProperty("java.specification.version")); }
рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рд╛рд▓ рдмреАрдд рдЧрдП, рдФрд░ рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдЯреВрдЯ рдЧрдПред рдпрд╣реА рд╣реИ, рдпрд╣ рдЕрднреА рднреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг "рдирд┐рд╢реНрдЪрд┐рдд" рдереЗ, рдЗрддрдирд╛ рдХрд┐ рдирд╛рдХ рдХрд╛ рдордЪреНрдЫрд░ рдзреВрдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдХрд┐рд╕реА рдиреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦрд╛:
public void test() throws Exception { final Calendar calendar = myVeryCleverNonStandardApiCall(); final int year = calendar.get(Calendar.YEAR);
рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж, рдЗрд╕рдиреЗ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рднреА рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдЕрдЪреНрдЫреЗ рдЖрдБрдХрдбрд╝реЛрдВ рдХреА рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдлрд┐рд░ рд╕реЗ рдорд░рдореНрдордд рдХреА рдЧрдИред рдЪреВрдВрдХрд┐ рдПрдирдкреАрдИ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛, рдФрд░ рдХреЛрдб рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдлреЗрдВрдХрдиреЗ рд╕реЗ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рд╣реЛрдЧрд╛, рдкреБрд░рд╛рдирд╛ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдЪреНрдЫрдиреНрди рдерд╛, рдФрд░ рдЖрдВрдЦреЛрдВ рдХреЛ рдЯрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рджреЗрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
public void test() throws Exception { Thread.sleep(1000); } public void _test() throws Exception { final Calendar calendar = null;
рдирд┐рд╖реНрдХрд░реНрд╖?
рдХрднреА-рдХрднреА рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЧ рдХреЛрдб рдХреЗ рд▓рд┐рдП
рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдПрдХреНрд╕реЗрд╕ рдФрд░
рдкреЛрдЯреЗрдВрд╢рд┐рдпрд▓ рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕реНрддрд░ рдХреЛ рднреА "рдПрд░рд░" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╡рд┐рд╢реЗрд╖рдХрд░ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдХреЗ рд▓рд┐рдПред рдЖрдк рдХрд▓реНрдкрдирд╛ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдмрд╛рдЗрд╕рди" рдХреНрдпрд╛ рд╕рдХреНрд╖рдо рд╣реИ, рдЬрд┐рд╕рдиреЗ
рдмреАрд╕ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЖрдкрдХреЗ рдЙрддреНрдкрд╛рдж рдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдерд╛ рдФрд░
рджрд╕ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреБрдЫ Google рдпрд╛ рдЕрдореЗрдЬрд╝реЕрди рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдерд╛ред
рдЗрдЪреНрдЫрд╛рдУрдВ
рдпрджрд┐ C # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рдардХреЛрдВ рдореЗрдВ рд╕реЗ рд▓реЛрдЧ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ - рдХреНрдпрд╛
Nullable рдЬреИрд╕реА рдЕрдЪреНрдЫреА рдЪреАрдЬрд╝ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ C # рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?