익명 내부 클래스 와 리 셋 함수 에 대하 여
우선 내부 류 는 JAVA 언어의 주요 부가 부분 임 을 알 아야 한다.내부 클래스 는 거의 한 클래스 내부 의 모든 위치 에 있 을 수 있 고 실례 변수 와 같은 등급 에 있 거나 방법 안에 있 거나 심지어 표현 식 의 일부분 에 있 을 수 있다.자바 의 내부 류 는 구성원 내부 류,국부 내부 류,익명 내부 류 로 나 뉘 는데 다음은 익명 내부 류 이다.
A.반전 함수 에 대하 여
익명 내부 클래스 에 리 셋 함 수 를 사 용 했 습 니 다.리 셋 함 수 는 무엇 입 니까?
리 셋 이란 클 라 이언 트 프로그램 C 가 서비스 프로그램 S 의 특정한 함수 A 를 호출 한 다음 에 S 는 어느 때 C 중의 특정한 함수 B 를 반대로 호출 하 는 것 이다.C 에 있어 이 B 를 리 셋 함수 라 고 한다.예 를 들 어 Win 32 의 창 프로 세 스 함 수 는 전형 적 인 반전 함수 입 니 다.일반적으로 C 는 스스로 B 를 호출 하지 않 는 다.C 가 B 를 제공 하 는 목적 은 S 로 하여 금 그것 을 호출 하 게 하 는 것 이 고 C 가 제공 하지 않 을 수 없다.S 는 C 가 제공 하 는 B 의 이름 이 누구 인지 모 르 기 때문에 S 는 B 의 인터페이스 규범(함수 원형)을 약정 한 다음 에 C 가 S 의 한 함수 R 을 통 해 S 에 게 자신 이 B 함 수 를 사용 할 것 이 라 고 알려 준다.이 과정 을 리 셋 함수 의 등록 이 라 고 하고 R 을 등록 함수 라 고 한다.웹 서비스 와 자바 의 RMI 는 모두 리 셋 메커니즘 을 사용 하여 원 격 서버 프로그램 에 접근 할 수 있다.다음은 하나의 예 로 설명 한다.
프로그래머 A 는 프로그램(프로그램 a)을 썼 는데,그 중 에 리 셋 함수 인터페이스 가 미리 남아 있 고,이 프로그램 을 봉인 했다.프로그래머 B 는 a 에 게 자신의 프로그램 b 중의 한 방법 을 호출 하 게 하려 고 한다.그래서 그 는 a 의 인 터 페 이 스 를 통 해 자신의 b 중의 방법 을 되 돌려 준다.목적 달성.C/C++에서 리 셋 함 수 를 사용 하려 면,떨 어 진 함 수 는 호출 자 에 게 자신의 포인터 주 소 를 알려 야 하 는데,JAVA 에 포인터 가 없 으 면 어떻게 합 니까?우 리 는 인터페이스(interface)를 통 해 리 셋 함 수 를 정의 할 수 있다. 내 가 프로그래머 A 라 고 가정 하면 다음은 나의 프로그램 a 이다.
프로그래머 B 가 내 정의 에 따라 인 터 페 이 스 를 만 들 수 있 도록 인 터 페 이 스 를 정의 해 야 합 니 다.
4.567913.그래서 프로그래머 B 는 이 인터페이스 만 실현 하면 리 셋 의 목적 을 달성 할 수 있다.
public class Caller
{
public MyCallInterface mc;
public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}
public void call(){
this.mc.method();
}
}
public class Caller
{
public MyCallInterface mc;
public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}
public void call(){
this.mc.method();
}
}
B.익명 내부 클래스
내부 류,내부 류 의 역할,자바 의 다 형,무엇이 반전 함수 인지 이해 해 야 합 니 다.인터넷 에는 많은 상세 한 해석 이 있 는데,간단하게 보기 위해 단지 간단 한 설명 을 했 을 뿐이다.익명 내부 클래스 는 함수 의 매개 변수 로 전달 되 는 방법 입 니 다.이 방법 에 서 는 인터페이스 형식 으로 들 어 오 는 익명 클래스 를 받 아들 이 고 그 방법 을 호출 합 니 다.이것 은 다 중 입 니 다.원 리 는 사실 회 조 를 실현 한 것 이다.익명 의 내부 클래스 의 방법 을 사용 할 테 니까.아래 코드 손 이 두 드 린 테스트 되 지 않 은 것 은 단지 시범 을 보이 기 위 한 것 이다.
public interface MyCallInterface
{
public void method();
}
public interface MyCallInterface
{
public void method();
}
북경대학-Google Android 실험실 에서 발췌
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.