저는 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)
'myInstance.setId (15L)'을 시도하십시오. 접미사없이 15를 전달하면 정수로 전달됩니다. –
[관련] (http://stackoverflow.com/questions/6834037/initialize-a-long-in-java) – ajp15243
감사합니다. 어떤 종류의 마법이야? 나는 결코 그 점을 생각하지 않을 것입니다. 왜 NetBeans가 이것을 필요로하지 않을 수 있습니까? –