IntelliJ IDEA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЬрд╛рд╡рд╛ рдореЗрдВ NPE рдирд░реНрдХ рдХреЛ рд╣рд░рд╛рдПрдВ

рддреНрдпрд╛рдЧ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдИ рджреА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рднрд╛рд░рддреАрдпреЛрдВ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ 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); // assertEquals(1997, year); // assertEquals("1.1", System.getProperty("java.specification.version")); } 

рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж, рдЗрд╕рдиреЗ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рднреА рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдЕрдЪреНрдЫреЗ рдЖрдБрдХрдбрд╝реЛрдВ рдХреА рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдлрд┐рд░ рд╕реЗ рдорд░рдореНрдордд рдХреА рдЧрдИред рдЪреВрдВрдХрд┐ рдПрдирдкреАрдИ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛, рдФрд░ рдХреЛрдб рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдлреЗрдВрдХрдиреЗ рд╕реЗ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рд╣реЛрдЧрд╛, рдкреБрд░рд╛рдирд╛ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдЪреНрдЫрдиреНрди рдерд╛, рдФрд░ рдЖрдВрдЦреЛрдВ рдХреЛ рдЯрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рджреЗрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

 public void test() throws Exception { Thread.sleep(1000); } public void _test() throws Exception { final Calendar calendar = null; //myVeryCleverNonStandardApiCall(); final int year = calendar.get(Calendar.YEAR); // assertEquals(1997, year); // assertEquals("1.1", System.getProperty("java.specification.version")); } 

рдирд┐рд╖реНрдХрд░реНрд╖?

рдХрднреА-рдХрднреА рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЧ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдПрдХреНрд╕реЗрд╕ рдФрд░ рдкреЛрдЯреЗрдВрд╢рд┐рдпрд▓ рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕реНрддрд░ рдХреЛ рднреА "рдПрд░рд░" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╡рд┐рд╢реЗрд╖рдХрд░ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдХреЗ рд▓рд┐рдПред рдЖрдк рдХрд▓реНрдкрдирд╛ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдмрд╛рдЗрд╕рди" рдХреНрдпрд╛ рд╕рдХреНрд╖рдо рд╣реИ, рдЬрд┐рд╕рдиреЗ рдмреАрд╕ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЖрдкрдХреЗ рдЙрддреНрдкрд╛рдж рдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдерд╛ рдФрд░ рджрд╕ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреБрдЫ Google рдпрд╛ рдЕрдореЗрдЬрд╝реЕрди рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдерд╛ред

рдЗрдЪреНрдЫрд╛рдУрдВ


рдпрджрд┐ C # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рдардХреЛрдВ рдореЗрдВ рд╕реЗ рд▓реЛрдЧ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ - рдХреНрдпрд╛ Nullable рдЬреИрд╕реА рдЕрдЪреНрдЫреА рдЪреАрдЬрд╝ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ C # рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

Source: https://habr.com/ru/post/In204518/


All Articles