저는 C# Unity3D 개발자이고 최근에 일하고있는 안드로이드 게임용 플러그인을 만들기 위해 자바로 뛰어 들었습니다. 간단히 말해,이 플러그인의 목적은 플레이어가 자신의 휴대 전화에서 호스팅하는 상대방이 다른 사람이 LAN에서 찾을 수 있도록 브로드 캐스트 할 수 있도록 자바 네트워킹 기능을 사용하는 것입니다.열거 형 <T>은 어디에 구현 되었습니까?
이 플러그인의 경우 장치의 모든 네트워크 인터페이스를 가져오고 모든 로컬 링크 또는 루프백 IP를 필터링 한 다음 (나머지 1 개의 주소가 있어야한다고 가정) 방송용 나머지 주소를 사용해야합니다 . 나는 성공적으로 이런 짓을했지만, 나는 내 코드의 라인으로 방해 도움이되지 수 :
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
내가 최근에 사물의 내부 동작에 대한 자세한 궁금하게했습니다. Unity3D는 훌륭한 API와 문서를 가지고 있습니다.하지만 최근에는 포함 된 IDE (MonoDevelop)를 사용하여 관리되는 소스 코드를 보았습니다. 일을 어떻게 처리하는지 더 잘 이해할 수 있도록 도와주었습니다. 그래서이 질문은 실제로 다시 한번 나의 호기심을 돕고 있습니다.
나는 C#에서조차도 인터페이스를 다루지 않았기 때문에이 부분을 혼란스럽게하려고 노력하고있다.
그래서 ... 열거 형은 암시 적으로 추상화 된 인터페이스이며 그 기능도 있습니다. 즉, 클래스는 해당 기능의 동작을 정의하기 위해 구현해야합니다.
docs.oracle.com에서 NetworkInterface를 보면 Enumeration을 구현하는 것처럼 보이지 않지만 작동하는 nextElement() 함수로 NetworkInterface 유형의 열거 형을 반환하는 함수 (위 그림 참조)가 있습니다. 뿐만 아니라 Enumeration이 인터페이스이기 때문에 함수가 어떻게 나를 제공 할 수 있습니까? 추상 클래스와 같은 인터페이스는 인스턴스화 할 수 없지만 호출 할 수있는 정의 된 함수로이 Enumeration 인스턴스를 받았으며 요청한 네트워크 인터페이스를 보유하고 있습니다.
열거 형을 구현 한 일부 (분명히 비 추상적) 유형의 객체를 나에게 반환 한 경우 아마도 NetworkInterface 형식의 개인 배열을 보유하고 있었을 것입니다.이 모든 것이 나에게 더 의미가 있다고 생각합니다.
미리 감사드립니다. docs.oracle.com에 NetworkInterface를 보면
인터페이스는 계약서와 같습니다. 언급 한 메소드는'java.util.Enumeration'에 의해 정의 된 계약을 따르는 객체를 반환하지만 그 이상으로 약속하지는 않습니다.이것은 구현에 클라이언트가 신경 쓰지 않고 (또는 알지 못해도) 구현을 변경할 수 있도록하는 데 유용합니다. – biziclop
다음 번 제안 : 위의 무관 한 박람회가 ** 많이 ** 있습니다. 귀하의 질문을 명확하고 간결하게 묻는 것이 좋습니다. 이 경우 약 3 문장 길이가 될 수 있습니다. –
@ T.J.Crowder Noted. 죄송합니다. 사람들이 내 지식 수준에 대한 아이디어를 갖고 있고 코드가 작동하지 않는다는 것이 문제가 아니라 어떻게 작동하는지에 대한 질문 이었기 때문에 배경 정보를 제공하고 싶었습니다. – isNull