[MontelLUG] Rogna con Java, ereditarietà (multipla?) ed interfacce (per guru)

Samuele samuele.zanin a tiscali.it
Dom 4 Ago 2019 20:13:33 CEST


Dopo un pomeriggio di porchi, avevo definito un oggetto di tipo 
BlockingQueue (che è una interfaccia)

private BlockingQueue<TMessage> MessageQueue

Un oggetto MessageQueue che contiene oggetti TMessage.

Veniva creato così:
     MessageQueue = new |LinkedBlockingQueue|();

Fin qui tutto bene, se non che LinkedBlockingQueue non aveva un metodo 
che mi serviva (rimanere in attesa finché non veniva aggiunto un oggetto 
nella lista); una variante del metodo peek() ma senza che rimuova l'oggetto.
Al che mi sono ereditato la classe LinkedBlockingQueue:

public class TMessageQueue extends LinkedBlockingQueue
{
   public void WaitMessage()
   {
     //Fa cose
   }
}

Ma  MessageQueue.WaitMessage(); non viene visto in quanto MessageQueue è 
di tipo BlockingQueue che non ha quel metodo.
Non posso dichiarare MessageQueue di tipo TMessageQueue perché in questo 
modo non mi trova i vari metodi di BlockingQueue.

Mi verrebbe da dire che devo fare una interfaccia che estende 
BlockingQueue e poi una classe derivante da LinkedBokcingQueue che la 
implementa, ma io con l'ereditarietà multipla e sti salti mortali in 
Java non ci ho mai avuto a che fare.

Qualcuno mi sa dare una mano?

Grassie


Maggiori informazioni sulla lista montellug