2012-02-28 7 views
3

최근 인터뷰 담당자가 나에게 대답 할 수없는 질문을 한 Java Interview에갔습니다. 그는 문자열을 인스턴스처럼 String에 할당 할 수있는 클래스를 만드는 방법을 물었습니다. 내가 설명해 줄 것을 허락해라.Assignment with String

나는 MyClass 클래스를 만들고, 그 클래스의 객체를 만든다. obj라고한다. 과제는 다음과 같아야합니다 :

MyClass obj = "my Text"; 

나는 이런 종류의 것을 찾았지만 정답을 얻을 수 없었다.

답변

7

"문자열에 할당되었습니다"라고 말하면 코드 예제에는 String 값이 할당 된 것으로 표시됩니다. 이들은 매우 다른 것들입니다. 전자는 간단합니다. MyClasstoString() 메소드를 작성하면됩니다. 후자는 String이 최종 수업이므로 기본적으로 불가능합니다.

기술적으로 마지막 점과 관련하여 : rules for assignment conversion의 경우 String 값은 String 또는 더 넓은 참조 유형의 변수에만 지정할 수 있습니다. 유일한 더 넓은 참조 유형은 Object, CharSequence, SerializableComparable<String>입니다. (Stephen C의 모자 팁).

+0

예, 기술적 인 의미에서 "인스턴스를 문자열에 할당"하고 있지는 않지만 (기술적으로는 의미가 없기 때문에) 그렇습니다. –

+2

* "더 넓은 참조 유형은 Object *"또는 "CharSequence", "Comparable "또는 "Serializable"입니다. –

+0

@StephenC - 잘 잡습니다. 내 대답 업데이트 중. –

0

나는 당신이하고 싶은 것이 가능하다고 생각하지 않습니다. 서브 클래스를 의미 final

MyClass obj = new String("my Text"); 

그래서 MyClassjava.lang.String의 서브 클래스해야하지만 String는 선언 :

표현 "my Text"은 당신이 당신이하려는 것은 효과가 너무 new String("my Text")에 해당 명시 적으로 금지되어 있습니다.

+1

_ "내 텍스트"는 새 문자열 ("내 텍스트") _와 정확히 동일하지 않습니다. 컴파일 타임 상수''my text ''는 인턴 될 것입니다. 문자열 표현 인'new String ("my text")는 인턴 된 문자열이 아닙니다. –