让某 method 明确声明: 我不接受 null 参数, 传了 null , 我马上崩溃 !
并且, 该抛错在编译阶段抛出, 不要跑到运行时去
PHPz2017-04-18 10:36:33
Java의 유형 시스템은 이를 지원하지 않으며 플러그인: Checker Framework를 통해서만 구현할 수 있습니다. 주석을 추가하려면 컴파일 중에 플러그인을 지정하세요.
위는 컴파일러의 null 감지를 구현합니다. null이 전달되는 경우 충돌은 플러그인을 통해 null 확인 코드를 삽입하여 수행할 수 있습니다.
巴扎黑2017-04-18 10:36:33
좋은 질문이네요. 저는 평소에 함수를 어떻게 구현하는지에만 집중하는데, 이 질문처럼 Java에서는 왜 이런 방식으로 구현하지 않는지 생각해 본 적이 없습니다. Java 구문이 지원된다면 정말 좋겠지만, 다시 생각해보면 뭔가 잘못된 것 같습니다.
Java가 이러한 구문을 지원한다고 가정하면 주석을 사용하세요. @NotNull
매개변수가 비어 있지 않음을 나타냅니다
다음과 같은 시나리오: 사용자가 성공적으로 로그인한 후 사용자의 로그인 시간과 IP가 업데이트됩니다.
사용자 데이터에는 다음이 포함됩니다.
name | password | lasttime | ip |
---|---|---|---|
aaa | 123456 | 2017-01-09 | 192.168.1.1 |
bbb | 123456 | 2017-01-08 | 192.168.1.1 |
사용자 정보 의사 코드 업데이트:
으아아아@NotNull
은 매개변수를 나타냅니다. account
은 비워둘 수 없으며 여기에는 문제가 없습니다.
사용자 정보 확인 로그인 의사 코드 받기:
으아아아우리는 매개변수가 비어 있는 것을 원하지 않고, 반환 값이 비어 있는 것을 원하지 않으므로 문제가 없습니다.
주요 논리 판단 의사 코드:
으아아아그럼 문제는 account 매개변수를 service.updateAccount()
메소드에 전달할 수 있고 컴파일을 통과할 수 있느냐는 것입니다. 데이터베이스에서 읽어온 Accoount
객체는 본질적으로 모호한 객체일 수도 있고, null
일 수도 있습니다.
그렇습니다. NullObject Pattern(NullObject Pattern) 이라는 패턴이 되는데, 이는 결과가 비어 있음을 나타내기 위해 전용 빈 개체를 생성한다는 의미입니다.
자세한 내용을 확인해주세요:
https://segmentfault.com/q/10...
http://www.cnblogs.com/haodaw...