69138


以下のように、内部にstaticなインターフェースがいくつか定義されているクラスにおいて、  
インターフェース名からクラスを取得したいのですが、どのようにすれば良いでしょうか。

[code]

    public class XxxForm implements Serializable {
        public static interface GroupA {}
        public static interface GroupB {}
               :
    }
    
[/code]

具体例として、XxxFormのインスタンスと、Interface名（"GroupA"）を引数に  
interfaceのクラス（XxxForm.GroupA.class）を取得するメソッドを作りたいと考えています。


CC BY-SA 4.0
2020-07-31T01:24:13.757
69135
2020-07-31T04:03:48.143
40136
question
java
Javaクラス内に定義されたInterfaceのClassを、インターフェース名から取得する方法


簡単に思いついたのは、以下のような取得方法。

[code]

     public class Questions69135 {
        public static void main(String[] args) throws ClassNotFoundException {
            XxxForm xxx = new XxxForm();
            Class<?> class1 = findInnerClass(xxx.getClass(),"GroupA");
            
            System.out.println(class1.equals(XxxForm.GroupA.class));
        }
    
        private static Class<?> findInnerClass(Class<?> klass, String name) throws ClassNotFoundException {
            return Class.forName(klass.getName() + "$" + name);
        }
    }
    
[/code]

Class.forName を使う方法で大丈夫なのか心配ですが


CC BY-SA 4.0
2020-07-31T04:03:48.143
69138
2020-07-31T04:03:48.143
4419
69135
answer