2014-09-08 2 views
1

나는 내 자신의 MyDate 클래스를 만들었습니다. 기본적으로 Long 값을 약간의 toString() 함수로 래핑합니다. equals()compareTo()을 구현했습니다. 내 프로그램은 일부 데이터를 읽고이 MyDate 클래스를 보유하는 클래스의 객체를 인스턴스화합니다. 문제는 가끔 데이터가 나쁘기 때문에 public static final long NODATE = Long.MIN_VALUE;을 작성하여 비어있는 새 인스턴스를 시작할 수 있도록했습니다 (포함하는 클래스의 null을 NullPointerExceptions을 피하기 위해 바꿉니다). 또한 인수가없는 생성자를 Long의 값인 NODATE으로 구현했습니다.자바에서는 객체를 const 값과 어떻게 비교해야합니까?

내 문제 : MyDate의 값이 NODATE인지 확인하고 싶습니다. Long이고 MyDate이 아니기 때문에 NODATE과 비교할 수 없습니다. 이를 수행하는 한 가지 방법은 다음과 같습니다.

if someObject.myDate.equals(new MyDate()).

하지만 비교를하기 위해 객체를 만드는 것이 낭비처럼 보입니까? 또 다른 방법은 MyDate.amINoDate() 메소드를 구현하는 것입니다.

다른 방법이 있습니까? 나는 NODATE에 inited되고 그것을 비교하기 위해 MyDate의 정적 인 인스턴스를 생성하려고 생각하고있었습니다. 그러나 비 정적 객체를이 정적 객체와 어떻게 비교할 수 있습니까?

+0

코드를 게시하십시오. – alfasin

답변

3
class MyDate { 
    public static final MyDate NODATE = new MyDate(Long.MIN_VALUE); 
    // ... 
} 

// ... 
if (someDate.equals(MyDate.NODATE)) // ... 

감사합니다. maskacovnik.

+0

문제 없음 : D : D : D – maskacovnik

+0

좋아요. 정확히 내가 무엇을 찾고 있었는지. 유숙하고 plused. –

3

당신은 또한 같은 MyDate에 메서드를 추가 할 수 있습니다

public boolean isNodate() { 
    return internalLongDate == Long.MIN_VALUE; 
} 
+0

이것은 aminodate() 메소드입니다. 더 좋은 이름은 +1. –

0

이 MyDate가하는 방법을 추가

if (someDate.isNoDate()) { 
    ... 
} 

을 또한 : 개인적으로는 Long.MIN_VALUE로부터를 방지하고 null을 사용합니다.