Java 연산자를 사용하는 instanceof
것이 일종의 반영 인지 여부에 대해 동료와 오늘 토론했습니다 . 그리고 토론은 실제로 반사를 정의하는 것으로 빠르게 발전했습니다.
그래서 반사의 정의는 무엇입니까?
그리고 instanceof
“반사 사용”의 사용입니까?
또한, instanceof
반사가 고려 된다면 , 다형성도 “반사 사용”이 아닌가? 그렇지 않다면 차이점은 무엇입니까?
답변
이것은 위키 백과에 따른 리플렉션의 정의입니다 :
컴퓨터 과학에서 리플렉션은 컴퓨터 프로그램이 런타임에 자체 구조와 동작을 관찰 (유형 검사 수행) 하고 수정할 수있는 프로세스 입니다.
나는 스스로 더 잘 말할 수 없었고 귀하의 질문에 중요한 부분을 강조했습니다. 즉, instanceof
반사를 사용하는 것으로 간주됩니다. 이 프로그램 은 구조를 관찰 하고 유형 검사를 수행 합니다 .
답변
명확성을 위해 두 가지 답변을 고려할 것입니다.
이론적 으로 instanceof
는 Falcon ‘s answer 에서 설명한 것처럼 일종의 반성 입니다.
컴퓨터 과학에서 리플렉션은 컴퓨터 프로그램이 런타임에 자체 구조와 동작을 관찰 (유형 검사 수행)하고 수정할 수있는 프로세스입니다.
그러나 실제로 프로그래머가 리플렉션 사용에 대해 이야기 할 때 일반적으로 변수가 특정 유형인지 확인하는 것 이상의 의미를 갖습니다. 이것은 다형성이 불가능한 초보적인 개념 입니다.
instanceof
자주 사용 하면 코드 냄새가 나고 대신 적절한 다형성을 사용할 수 있습니다.
답변
다음 기사에서 흥미로울 수 있습니다. http://java.sun.com/developer/technicalArticles/ALT/Reflection/
이 기사의 핵심은 Java의 리플렉션 기능의 일부인 “Class”클래스의 “isInstance”메소드를 사용하여 “instanceof”키워드를 시뮬레이션하는 코드 스 니펫입니다.
답변
다른 답변 때문에 Wikipedia의 정의가 변경되었습니다 (이 변경 사항에 동의하지만 변경 한 사람은 아닙니다). 괄호 안의 부분을 제거하십시오.
컴퓨터 과학에서 리플렉션은 컴퓨터 프로그램이 런타임에 자체 구조와 동작을 검사, 검사 및 수정하는 능력입니다.
https://en.wikipedia.org/wiki/Type_introspection 도 구체적으로 말합니다
내성을 반성과 혼동해서는 안된다
나는 고려하지 않을 instanceof
프로그램이 아닌 값 자체의 구조를 검사하고 그것을 (자바 : 프로그램 구조를 나타내는 어떤 값을 포함하지 않는다 : 첫 번째 정의에 해당하는 java.lang.Class
, java.reflect.Method
등); 반사의 특징은 그러한 가치와 함께 작용하고 있습니다.
답변
예, “instanceof”연산자는 일종의 리플렉션입니다. 이전 답변에서 이유를 알려줍니다.
“반사”또는 “객체 / 클래스 내부 검사”는 요즘 과대 광고이지만, 몇 가지 프로그래밍 언어가이 개념 중 일부를 사용하고 있습니다.
DOT NET (Java clone), (mis) 많이 사용합니다.