Java에서 IllegalArgumentException을 발생시키는 가장 짧은 코드 / 외부 패키지

자, 우리 모두 Java에서 IllegalArgumentException을 발생시키는 일반적인 방법을 알고 있습니다.

throw new IllegalArgumentException(); // 37 characters

그러나 더 짧은 방법으로 (더 적은 문자로) 그렇게해야합니다. 더 적은 코드로 java.lang.IllegalArgumentException을 어떻게 생성 할 수 있습니까?

  • 코드 조각은 Java 7에서 컴파일하고 실행해야합니다.
  • 가져 오기 / 외부 패키지 없음 (예 :을 사용하지 않음 java.util.Arrays.toString())
    • java.lang은 자동으로 가져 오기 때문에 예외입니다.
  • 고유 한 메소드 / 클래스를 추가 할 수 있습니다.
  • java.lang.IllegalArgumentException을 발생시켜야합니다.
    • 편집 : 오류 출력 (스택 추적)은 java.lang.IllegalArgumentException으로 이름을 지정해야하므로 하위 클래스는 없습니다.

기초를 시작하려면 :

class Titled {
    public static void main(String[] args) {
        throw new IllegalArgumentException();
    }
}



답변

이것들은 모두 grep패키지의 소스 코드를 핑함으로써 발견되었습니다 java.lang.

그들 모두는 “순수한”결과를 가져 IllegalArgumentException옵니다 (즉, 하위 클래스가 아닙니다).

표시된 것들은 어떤 종류의 검사 예외를 던지기 때문에 선언 *" throws Exception"(18 문자)를 추가하면 작동합니다 main.

12 자 (30?) 자 *

"".wait(-1);

결과는 다음과 같습니다.

java.lang.IllegalArgumentException: timeout value is negative

22 자 (40?) 자 *

new Thread().join(-1);

22 자

Character.toChars(-1);

30 자

Character.UnicodeBlock.of(-1);


답변

다음은 17 13 자로 멋진 짧은 방법입니다 .

new Long("");

그것은을 발생 NumberFormatExceptionIllegalArgumentException. 이것이것으로 확인합니다.

마찬가지로, 할 수있는 일

new Byte("");


답변

22 자 :

Character.toChars(-1);


Javadoc 실행 예 : java.lang.Character.toChars (int)

멋진 외형 변형 :

Character.toChars(~4); // 22 characters, number can be any non-negative (and -0)
Character.toChars(1<<7); // 24 characters

~i-1 * (i+1)비트를 반전시키기 때문에 동일 합니다. 따라서 0보다 작기 때문에 잘못된 매개 변수를 얻게
1<<7됩니다. 1을 7 번 이동하여 너무 큰 수를 만듭니다. (2를 7 번 곱하는 것과 같습니다). 마지막 허용 값 것 같다 1114111, 1114112실패합니다. 참고 : 환경에 따라 변경 될 수 있으며 항상 신뢰할 수있는 것은 아닙니다.

참고 항목 오라클 문서 “비트 단위와 비트 시프트 연산자”“기본 데이터 유형”

28 자 :

캐릭터 카운트 경쟁에서 캐릭터 클래스를 사용하는 것을 좋아하지 않는 경우 * :

Enum.valueOf(Enum.class,""); // 28 characters

*)이 말장난을 만들기 위해.


답변

21 자 :

System.getProperty("");

문서, 당 getPropertysetProperty던져 IllegalArgumentException키가 비어있는 경우.


답변

25 자

음수가 아닌 길이의 벡터를 만듭니다.

new java.util.Vector(-1);

디스플레이 :

Exception in thread "main" java.lang.IllegalArgumentException: Illegal Capacity: -1
    at java.util.Vector.<init>(Vector.java:129)
    at java.util.Vector.<init>(Vector.java:144)
    at Titled.main(Titled.java:3)


답변

24 자입니다 :

System.out.printf("%z");

이는 발생합니다 IllegalFormatExceptionIllegalArgumentException.


답변

19 자 :

String.format("%");

예외 java.util.UnknownFormatConversionException, 어떤에서 상속 IllegalFormatException, 이는 차례로로부터 상속 IllegalArgumentException;