| import org.jetbrains.annotations.Contract; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| import java.lang.RuntimeException; |
| |
| class Contracts { |
| |
| public void simpleFail(@Nullable String message) { |
| notBlank(message); |
| log(message); |
| } |
| |
| @Contract("_->fail") |
| private void notBlank(@Nullable Object message) { |
| throw new RuntimeException(); |
| } |
| |
| @Contract("_,_,_->fail") |
| private void notBlank(@Nullable Object o, String message, Object... args) { |
| throw new RuntimeException(); |
| } |
| |
| public void varargFail(@Nullable String message) { |
| notBlank(message, "Message should not be blank"); |
| log(message); |
| } |
| |
| public void vararg1(@Nullable String message) { |
| notBlank(message, "Message should not be blank", new Object()); |
| log(message); |
| } |
| public void vararg2(@Nullable String message) { |
| notBlank(message, "Message should not be blank", new Object(), new Object()); |
| log(message); |
| } |
| public void vararg3(@Nullable String message) { |
| notBlank(message, "Message should not be blank", new Object(), new Object(), new Object(), new Object(), new Object()); |
| log(message); |
| } |
| |
| public void log(@NotNull String message) { |
| System.out.println(message); |
| } |
| } |