|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2008
Città: Bologna
Messaggi: 2179
|
[java] problema con errori e segnalazioni (@Override)
Codice:
private Vector listeners = new Vector(); Vector is a raw type. References to generic type Vector<E> should be parameterized! Se mettessi prima della dichiarazione questa annotazione @SuppressWarnings("unchecked") dopo dovrei metterla anche in altri punti e non mi piace molto come soluzione. Penso sia abbastanza banale come cosa ma non riesco a risolverla. Altra cosa: su un @Override prima non mi venuva segnalato errore, adesso si è prima di un metodo del genere Codice:
public void stateChanged(ChangeEvent ce) { }
__________________
CM 690 Pure w || ROG Crosshair III || AMD || OCZ Gold || Ati || ciao Kiu... || LOST addicted - 2004 ♥ 2010 1900 S.S.LAZIO |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
1) Per il warning sul Vector, il motivo è dovuto alla presenza dei Generics in Java, introdotti dalla versione Java 5 in poi.
Per evitare il warning (che non è un errore) parametrizza il tipo: per esempio, se ti serve un Vector di String lo dichiarerai & inizializzerai così: Codice:
Vector<String> strings = new Vector<String>(); 2) per l'errore sull'annotazione @Override controlla di aver eseguito correttamente l'override del metodo (controlla la firma del metodo, da Java 5 in poi i metodi sono covarianti). [/code]
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jan 2008
Città: Bologna
Messaggi: 2179
|
Quote:
Cosa intendi per controllare la firma del metodo ?? Capisco che l' override si mette poichè riscrivo un metodo ereditato, ma non capisco perchè mi da errore. Il metodo è all' interno di una classe che estende MouseAdapter... Codice:
public void stateChanged(ChangeEvent ce) {
// Metodo per la gestione degli eventi dello JSlider.
JSlider source = (JSlider)ce.getSource();
if (source.getValueIsAdjusting()) {
// Ottiene lo stato di avanzamento del cursore dello slider.
double fps = (double)source.getValue();
if(WhatSuiteSoundManager.getInstance().getAudioPlayer() != null) {
WhatSuiteSoundManager.getInstance().getAudioPlayer().setMediaTime(new Time(fps));
}
}
}
__________________
CM 690 Pure w || ROG Crosshair III || AMD || OCZ Gold || Ati || ciao Kiu... || LOST addicted - 2004 ♥ 2010 1900 S.S.LAZIO |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Che io sappia il fatto che la tua classe estenda (extends) MouseAdapter non c'entra nulla; un metodo con la firma: void stateChanged(ChangeEvent e) è dichiarato solo nell'interfaccia javax.swing.event.ChangeListener.
Quindi le cose sono due (anzi tre, non ho capito bene in effetti in quale caso ti trovi): 1) la classe in cui hai definito il metodo 'stateChanged' eredita già da una classe che già comprende la definizione di quel metodo. Quindi la tua classe sta eseguendo un override del metodo e allora devi annotarlo con @Override. 2) la classe in cui hai definito il metodo 'stateChanged' estende una interfaccia che dichiara quel metodo. Quindi la tua classe deve eseguire l'implementazione del metodo e allora non devi annotarlo con @Override. 3) la classe in cui hai definito il metodo 'stateChanged' non eredita da nessuno la definizione di quel metodo. Quindi la tua classe sta eseguendo una definizione di un metodo "nuovo" e quindi non devi annotarlo con @Override. Scoperto in quale caso ti trovi dovrebbe essere semplice risolvere. Per curiosità, che IDE usi?
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2008
Città: Bologna
Messaggi: 2179
|
Presumo proprio sia il 2 caso allora, ovviamente togliendo l' annotazione @override non compare più nessun errore. La classe estende MouseAdapter e implementa ActionListener e ChangeListener.
Come IDE ho usato Eclipse.
__________________
CM 690 Pure w || ROG Crosshair III || AMD || OCZ Gold || Ati || ciao Kiu... || LOST addicted - 2004 ♥ 2010 1900 S.S.LAZIO |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Tra l'altro ho detto una cosa errata: i casi erano due, il numero 1) non era applicabile perchè, sapendo già da prima che la tua classe estende MouseAdapter, e sapendo che in Java una classe può estendere solo una classe, e sapendo che MouseAdapter a sua volta non estende ne implementa alcun metodo con la firma di stateChanged era ovvio che tale metodo non poteva essere stato ereditato, quindi niente @Override per forza di cose.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:25.




















