주어진 클래스를 확장 한 메소드로 전달되는 객체를 체크 인하는 가장 좋은 방법은 무엇입니까?Java가 메소드에 전달 된 객체가 특정 클래스를 확장하도록 보장
현재 내가 보낼 수있는 데이터의 ByteBuffer를 소요하는 방법과 내가 쓴 '플레이어'클래스가 있고, 클라이언트로 전송되는 IO 서버의 데이터를 위로 큐 :
public void send(ButeBuffer toSend, Player player)
{
// prep the byte buffer for sending, and queue it on the IO server
}
내가 뭘 할 수있는 선수 클래스를 확장하는 모든 개체가 전달되는 플레이어 개체를 허용하고 싶습니다. 몇 가지 검색을 수행하고 다음과 같은 것을 찾았습니다.
public void send(ByteBuffer toSend, Player<? extends Player> player)
{
// prep the byte buffer for sending, and queue it on the IO server
}
하지만 컴파일 오류가 발생하고 정확히 무슨 일이 일어나는지 이해하지 못합니다. 이것이 올바른 방법일까요? 그렇다면 누구나이 코드가 구체적으로 무엇을하는지, 왜 작동하지 않는지 설명 할 수 있습니다. 또는이를 자세히 설명하는 기사에 링크 할 수 있습니다.
Alternatlly, 나는 내가 이런 식으로 설정할 수 있습니다 가정 :
public void send(ByteBuffer toSend, Object player)
{
// Check that the player extends Player, using instanceof or something
// along those lines
// Prep the ByteBuffer, and queue the data to send
}
그러나, 그 코드는 위의 코드에 비해 나에게 가지 취성 느낀다.
모든 도움을 환영합니다. 고마워요 :)
'Player extends Player>는 플레이어 클래스가 generic 클래스 일 것을 요구합니다 :'public class Player {...'만약 당신이 제네릭 클래스로 만들었더라도, Player 확장 플레이어 ??>>'. 일반 클래스는 콜렉션과 같은 임의의 정보를 포함하기위한 클래스입니다 (예를 들어'java.util.ArrayList'를보십시오). 다른 사람들이 말했듯이 첫 번째 코드 샘플은 사용자 목적에 가장 적합합니다. –