이 질문의 배경은 이전 질문에서 찾을 수 있습니다.클래스 유형을 참조 클래스로 변환
이전 질문 : http://tinyurl.com/chq4w7t
내가 송신 기능이있는 인터페이스 Comm
있습니다
public interface Comm
{
public int send(Socket socket, byte[] bytes);
}
을 나는 다양한 수업을 (Server
, Client
, Serial
등) 인터페이스 Comm
를 구현합니다. 이러한 클래스 객체를 Comm
객체와이 Comm
클래스 중 하나를 통신 매체로 사용하도록 구성 할 수있는 다양한 플러그인 사이의 관리자 역할을하는 다른 클래스의 다른 보내기 함수에 매개 변수로 전달할 수 있습니다.
(Server
, Client
, Serial
등) 나는 Class[]
를 반환하고 매개 변수로 문자열을 취하는 getClasses
기능이 내 앞의 질문에서
public void Send(Comm com, Socket socket, byte[] message)
{
com.send(null, message);
}
이하 송신 기능에 매개 변수로 전달 될 수 있습니다 . 이것은 다른 구성 옵션을 제공하는 데 사용됩니다.
예를 들어 Class.forName("Client");
을 사용하여 클라이언트에 Class
개체를 반환합니다.
결국 내 질문은 다음과 같다 :
은 어떻게 Comm
유형 Class
에서 변환합니까? 나는 아이디어 얻기 위해 당신을위한 다음 시도했다 : (. cboxComm
내 코드를 테스트하기위한 테스트 콤보입니다 그것은 Comm
객체의 클래스 이름을 포함)
// Some code I have no idea how it works, an explanation would be awesome
// regarding the diamond syntax
Class<? extends Comm> classComm = Class.forName(cboxComm.getSelectedItem().toString());
// Error here, I don't know how to convert or cast it
Comm com = classComm;
// Sending function as described above
send(com, null, null);
'Comm com = (Comm) classComm; '이 (가) 작동하지 않습니까? 그래도 instanceof 확인해야합니다. – Ankit
@Ankit : 나는 그것을 기대하지 않을 것입니다! –
"다이아몬드 구문"에 대한 귀하의 의견은별로 의미가 없습니다 - 당신은 * 다이아몬드 구문을 사용하지 않습니다. –