split
이 null을 반환 할 수 있습니까 String[]
? 불필요한 수표를 사용하지 않고 코드에서 가능한 한 수비가되도록 노력하고 싶습니다. 궁금합니다.Java String.split이 null 문자열 []을 반환 할 수 있습니까?
String[] parts = myString.split("\\w");
내가 parts
포스트 분할을 사용하기 전에 널 검사를 수행해야 할 다음과 같이 코드는?
split
이 null을 반환 할 수 있습니까 String[]
? 불필요한 수표를 사용하지 않고 코드에서 가능한 한 수비가되도록 노력하고 싶습니다. 궁금합니다.Java String.split이 null 문자열 []을 반환 할 수 있습니까?
String[] parts = myString.split("\\w");
내가 parts
포스트 분할을 사용하기 전에 널 검사를 수행해야 할 다음과 같이 코드는?
null을 반환하지 않습니다. 확실하지 않은 경우 메소드의 javadoc을 항상 확인해야합니다. 예를 들어 String#split(String)
이 방법은 같은 경우, 2 개의 인수를
split
방법
를 호출하여 작동 말한다 ... 그리고 String#split(String,int)
는 말한다 : 표현이 일부 일치하지 않는
경우 입력의 결과 배열은 단 하나의 요소, 즉이 문자열을 갖습니다.
Javadoc에서 발생할 수있는 예외의 종류와 더 중요한 이유는 예외가 발생한 이유입니다. 또한 클래스가 스레드로부터 안전한지 여부를 확인하는 것이 매우 중요합니다.
아니요, 부품에 null이 있는지 확인할 필요가 없습니다.
분할 방법은 방법의 시작 부분에서이 작업을 수행하는 Patter.split 메소드를 호출 :
ArrayList<String> matchList = new ArrayList<String>();
그리고 마지막에 배열을 반환() matchList.toArray 않습니다.
따라서 null을 테스트 할 필요가 없습니다.
구현을 보는 데 의존하지 마십시오. 구현이 변경 될 수 있습니다. 문서화 작업은 계약서입니다. –
True .. 그러나이 메소드의 구현이 변경되지 않거나, null 체크없이이 메소드를 사용한 전체 Java 월드가 혼란에 빠지게됩니다. –
이 경우에는 변경된 경우 문서가 'null'을 반환하지 않아야합니다. –
API가 명확하지 않은 경우 Java 소스 코드를 다운로드하는 것이 좋습니다. 여기에있는 모든 대답은 답을 말해 주지만 실제로보아야합니다. here에서 Java 소스 코드를 다운로드 할 수 있습니다 (페이지 하단 근처를보십시오).
소스 코드를 따르면 String[] Pattern.split(CharSequence input, int limit)
이됩니다. 반환 값은 toArray
이 호출 된 null이 아닌 ArrayList
에서 가져옵니다. toArray
null을 반환하지 않습니다. 빈 목록이있는 경우 빈 배열이 다시 나타납니다.
결국 결국 아니요, null을 확인할 필요가 없습니다.
T.J. Crowder의 의견은 다른 곳에 있습니다. – EJP
null을 반환하는 javadoc을 확인했습니다! = NPE를 던지고 있습니다. Throw 할 수있는 PatternException을 보았습니다. – Woot4Moo
'split (String regex)'에 대한 Javadoc은 null을 반환 할 수 없다는 것을 나타내지 않습니다. – Paul
@Paul : 아니요,'null '이 반환 될 수 있다면, (또는'Pattern # split' docs) 그렇게 말할 것입니다.그리고 단일 인수가 말하는 두 개의 인수 버전은 다음과 같이 말합니다. "표현식이 입력의 어떤 부분과도 일치하지 않으면 결과 배열에 단 하나의 요소, 즉이 문자열이 있습니다."* –