私はプロトコル バッファが初めてで、リフレクション メソッドを調査しています。C++ でリフレクション インターフェイスを取得するメソッド GetReflection() が表示されますが、Java で同様のメソッドを見つけることができませんでした。Javaでリフレクションインターフェースを取得する方法を知っている人はいますか?
6127 次
3 に答える
7
Protobuf-C++ の「リフレクション」インターフェースに相当する Java は、単なるcom.google.protobuf.Message
インターフェースです。すべてのメッセージ オブジェクトがこれを実装しておりgetField()
、記述子によって任意のフィールドを読み取るようなメソッドがあります。同様に、すべてのビルダーはMessage.Builder
which hassetField()
などを実装します。C++ とは異なり、この機能は別のオブジェクトに委譲されません。
于 2013-10-18T23:43:52.107 に答える
1
あなたがやろうとしている理由を説明できますか???、私はそれを念頭に置いて答えを調整することを知っています
- 他の人が示したように、Java の任意のクラスでリフレクションを使用できます。
- Java 版はDynamicMessage Classを提供します。何をしようとしているのかによっては、 DynamicMessage クラスが求めているものであることに気付くかもしれません。このクラスを使用すると、proto 記述子を使用して任意の Protocol-Buffer を読み取り、getField メソッドなどを介してフィールドにアクセスできます。Proto-Descriptor でプロトコル バッファーが必要になります (protoc コマンドの --descriptor_set_out= パラメーターを使用して取得できます)。 )。
- 速度を最適化しない場合、protoc コマンドはリフレクションを使用するクラスを生成します。
于 2013-10-18T01:13:30.803 に答える
-5
リフレクション インターフェイスは、リフレクション パッケージにあります。通常、クラスインスタンスを使用してインターフェイスにアクセスします。
public static void main(String[] $)
{
Class clazz = String.class;
System.out.println(clazz.getName()); // "java.lang.String"
}
于 2013-10-18T00:20:21.360 に答える