Possible en double:
How to suppress Java compiler warnings for specific functionsEst-ce que le point d'avertissement de compilation est mauvais?
Je voudrais utiliser une carte pour mettre en œuvre le modèle de stratégie. Cependant, je ne peux pas trouver un moyen de le faire d'une manière qui fonctionne bien avec les génériques. Est-il possible de supprimer l'avertissement de compilation du code suivant sans modifier la fonctionnalité?
import java.util.HashMap;
import java.util.Map;
interface Event
{
}
interface EventProcessor<T extends Event>
{
public void handleEvent(T event);
}
class EventA implements Event
{
}
class EventB implements Event
{
}
class ProcessorA implements EventProcessor<EventA>
{
@Override
public void handleEvent(final EventA event)
{
System.out.println("Handling event type A");
}
}
class ProcessorB implements EventProcessor<EventB>
{
@Override
public void handleEvent(final EventB event)
{
System.out.println("Handling event type B");
}
}
class GenericEventProcessor
{
Map<Class<? extends Event>, EventProcessor> map = new HashMap<Class<? extends Event>, EventProcessor>();
public GenericEventProcessor()
{
map.put(EventA.class, new ProcessorA());
map.put(EventB.class, new ProcessorB());
}
public void processEvent(Event event)
{
EventProcessor eventProcessor = map.get(event.getClass());
//Java Warning: GenericEventProcessorTest.java uses unchecked or unsafe operations.
eventProcessor.handleEvent(event);
}
}
public class GenericEventProcessorTest
{
public static void main(String[] args)
{
EventA eventA = new EventA();
EventB eventB = new EventB();
GenericEventProcessor eventProcessor = new GenericEventProcessor();
eventProcessor.processEvent(eventA);
eventProcessor.processEvent(eventB);
}
}
Edit: je l'ai dit, sans utiliser SuppressWarnings! Cela me dit normalement qu'il y a un problème avec ma conception et j'aimerais savoir si c'est le cas ici.
Et quels avertissements le compilateur montre-t-il? – reporter
J'ai édité le titre pour minimiser l'aspect avertissement de compilateur de cette question –
@reporter - l'avertissement est commenté dans le code (pas énormément clair, j'apprécie) –