public final class Messenger { private Map<String, Action1<? extends Message>> _actions = new HashMap<String, Action1<? extends Message>>(); public <T extends Message> void register(Action1<T> action) { // action が使ってる Generics な型を取り出す(という意味?)。 // action.getClass().getInterfaces(); でもいけるかと思ったら、Action1 までしか取り出せなかった。 Type[] types = action.getClass().getGenericInterfaces(); // 文字列化したら Action1<T> の T