아래 코드에 대해 혼동스러워합니다. 이 코드는 다른 사람이 작성한 것으로 현재 Java에서 매개 변수 전달이 작동하는 방식을보다 잘 이해할 수 있도록 코드를 연구 중입니다. 코드 # 1Java 매개 변수 전달
addKeyListener((KeyListener)new TAdapter());
코드 # 2
addKeyListener(new TAdapter());
는 동일한 것을 의미하고 TAdapter는 KeyAdapter 클래스를 확장하는 클래스입니다 가정 같은 일을 수행
가 있습니까? 또한 Eclipse에서 읽은 메서드 설명에서 메서드가 KeyListener 개체를 사용하더라도 TAdapter 개체를 KeyListener로 명시 적으로 캐스팅하지 않아도됩니다. 왜 이것이 가능한가? Java 문서에서 KeyAdapter 클래스에 대한 빠른 검색을 수행했으며 KeyAdapter 클래스는 KeyListener 인터페이스를 구현합니다. Java가 매개 변수 전달에서 작동하는 방식 중 하나는 메서드가 메서드 설명에 나열된 동일한 이름의 인터페이스를 구현하는 특정 클래스에서 상속 한 클래스의 인스턴스를 받아 들일 수 있다고 가정하는 것이 안전합니까? 그렇다면 왜 이것이 가능합니까?
P. 한 가지 덧붙여서 필자는 프로그래머가 TAdapter 클래스를 명명하는 이유를 이해하지 못합니다. T는 무엇을 의미합니까? 나는 또한 다른 소스 코드에서 이런 유형의 클래스 이름을 알아 차렸지만, 나는이 가정 된 규칙을 결코 이해하지 못했다.
나는 당신의 옆 질문을 사랑합니다. 당신은 그 질문을하는 것이 옳습니다. 필자는 평소에 다른 프로그래머를 비판하지 않겠지 만, 'TAdapter'는 끔찍한 이름이라고 말할 수 있습니다. 문자 'T'또는 무엇인가를 적용하려고하는 것 같습니다. (예, "타입"에 대한 헝가리 표기법이지만 쳇입니다!) –
고마워! 나는이 신비한 T 편지를 결코 내 수업의 이름을 지을 때 채택하지 않을 것입니다. 나는 나쁜 습관을 싫어한다. – Nicholas
OP는 프로그래밍, 특히 Java의 개념을 이해하지 못합니다. 이름 지정 규칙이 그 중 하나입니다. –