重複の可能性:
特定の関数に対する Java コンパイラの警告を抑制する方法
Map を使用して Strategy パターンを実装したいと考えています。ただし、ジェネリックとうまく連携する方法でこれを行う方法が見つかりません。機能を変更せずに、次のコードからコンパイル警告を削除することは可能ですか?
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);
}
}
編集: SuppressWarningsを使わずに言ったはずです!これは通常、私の設計に問題があることを示しており、ここで問題があるかどうかを知りたいと思います。