2013-04-30 4 views
1

저는 Setter에 Long 특성이 포함 된 클래스를 만들었습니다. setter를 사용하여 값을 임의의 숫자로 설정하려고 시도하면 아이디어실제 인수 int를 메소드 호출 변환으로 Long으로 변환 할 수 없다고 알려줍니다.Java에서 숫자를 입력하여 Long 특성을 명시 적으로 설정할 수 없습니다.

내 클래스입니다 : 다른 곳

public myClass() { 

    private Long id; 

    public Long getId() { 
     return this.id; 
    } 

    public Long setId(Long id) { 
     if(this.id == null) 
      this.id = id; 
     else throw new InvalidOperationException("Can't set more than once."); 
    } 

} 

그리고, 난 그냥하려고 해요 :

:

MyClass myInstance = new myClass(); 
myInstance.setId(15); 

빌드 오류는이 같은 트릭을 시도하는 저를 암시

long newID = 17; 
myInstance.setId(newID); 

... 입니다. 이상한 점은 NetBeans에서 다른 프로젝트가 열렸으며 동일한 상황에서 컴파일 오류가 발생하지 않는다는 것입니다 (그리고 "외부"영향이나 원하지 않는 상호 작용을 배제하는 것이 안전합니다. 여기서는 내 코드 조각만큼 간단합니다) .

컴파일러 설정 일 수 있습니까? 나는 일인지 당신은 당신이 myInstance.setId(15);을 할 때, 긴 기대 것 알고 long newID = 17;를 사용하면 왜 안 난 그냥 myInstance.setId(15)

+7

'myInstance.setId (15L)'을 시도하십시오. 접미사없이 15를 전달하면 정수로 전달됩니다. –

+0

[관련] (http://stackoverflow.com/questions/6834037/initialize-a-long-in-java) – ajp15243

+0

감사합니다. 어떤 종류의 마법이야? 나는 결코 그 점을 생각하지 않을 것입니다. 왜 NetBeans가 이것을 필요로하지 않을 수 있습니까? –

답변

7

myInstance.setId(15L); 

시도 사용할 수있는 작업에 대한 지금 좀 더하고 싶습니다 , 그렇지 않으므로 명시해야합니다.

1

여러분이 기꺼이 int을 전달한다면이 편집을하십시오.

int a=15; 
myInstance.setId((long)a); 

으로 ZIM-잼 O'Pootertoot, 따라서 명시 적으로 long에 캐스팅 할 필요가 기본적으로 숫자가 int 말했다.

관련 문제