Quelle serait la meilleure façon d'archiver un objet passé dans une méthode étendue d'une classe donnée?Java assurant qu'un objet passé à une méthode étend une classe donnée
Actuellement, j'ai une méthode qui prend un ByteBuffer de données pour envoyer et une classe « joueur » que je l'ai écrit, et files d'attente vers le haut de données sur le serveur IO à envoyer au client:
public void send(ButeBuffer toSend, Player player)
{
// prep the byte buffer for sending, and queue it on the IO server
}
Ce que je voudrais être capable de faire est de laisser l'objet joueur passé être n'importe quel objet qui étend la classe de joueur. Je l'ai fait quelques recherches et trouvé quelque chose comme ceci:
public void send(ByteBuffer toSend, Player<? extends Player> player)
{
// prep the byte buffer for sending, and queue it on the IO server
}
Mais qui me donne des erreurs de compilation, et je ne comprends pas exactement ce qui se passe. Serait-ce la bonne façon de faire cela? Et si c'est le cas, quelqu'un pourrait-il expliquer ce que ce code fait spécifiquement et pourquoi cela ne fonctionne pas et ou me lier à un article qui explique cela plus en détail.
Alternatlly, je suppose que je pourrais le mettre en place quelque chose comme ceci:
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
}
Cependant, ce code se sent sorte de fragile pour moi, par rapport au code ci-dessus.
Toute aide est la bienvenue. Merci :)
'Lecteur extends Player> 'exigerait que la classe de joueur soit une classe générique:' public class Player {... 'Et même si vous en faisiez une classe générique, vous obtiendriez des avertissements de compilateur sauf si vous aviez quelque chose comme' Player extends Joueur ??>> '. Les classes génériques sont plus destinées à contenir des informations arbitraires, telles qu'une collection (voir 'java.util.ArrayList' pour un exemple). Comme d'autres l'ont dit, votre premier échantillon de code est le meilleur pour votre objectif. –