通常は、このようないるProtobufクラスのインスタンスを作成します。java reflectionを使用してprotobufインスタンスを作成するには?
Bar.Builder bld = Bar.newBuilder();
bld.setXYZ(...
を私がいるProtobufクラスをインスタンス化するJavaリフレクションを使用してユースケースを持っている:
Class clsBar = Class.forName("com.xyz.Foo$Bar");
Object instance = clsBar.newInstance(); // error here!
Method mth = clsBar.getMethod(...);
上記のコードは、通常のJavaクラスと正常に動作します。しかし、生成されたprotobufクラス"com.xyz.Foo$Bar"
の場合は、そこにデフォルトのpublicコンストラクタがないので、NoSuchMethodException
が表示されます。
Java refectionを使用してprotobufインスタンスを作成する方法に関する提案はありますか?問題は、protobuf内部を本当によく知っている人のためです。感謝!ビルダークラスを介して:
clsBar.getConstructors()を呼び出し、返されたConstructorオブジェクトの1つで.newInstance()メソッドを呼び出した場合はどうなりますか? – Duston
手元にはどんな情報がありますか?希望のクラス以上?バイト配列などからProtobufインスタンスを作成する場合は、 'parseFrom'メソッドを使用できます。 – dpr
@Duston protobuf実装が進むので、すべてのコンストラクタはプライベートです。 dprには、protobufクラスで生成された完全修飾クラス名しかありません。 –