자, 우리 모두 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("");
그것은을 발생 NumberFormatException
인 IllegalArgumentException
. 이것 과 이것으로 확인합니다.
마찬가지로, 할 수있는 일
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("");
문서, 당 getProperty
과 setProperty
던져 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");
이는 발생합니다 IllegalFormatException
인 IllegalArgumentException
.
답변
19 자 :
String.format("%");
예외 java.util.UnknownFormatConversionException
, 어떤에서 상속 IllegalFormatException
, 이는 차례로로부터 상속 IllegalArgumentException
;