Java Proto の名前

Java protoc プラグインによって生成される名前。

このドキュメントには、さまざまな proto オプションに基づいて、proto の完全修飾 Java 名が何であるかに関する情報が含まれています。この名前は、そのメッセージを使用するためにインポートする必要があるパッケージに対応しています。

推奨事項

  • option java_multiple_files = true; を設定する
  • option java_outer_classname = "FileNameProto"; を設定する
  • option java_package = "com.google.package"; を設定する

説明

複数ファイル

java_multiple_files = true の場合、各メッセージに対して生成された Java クラスは個別の .java ファイルに配置されます。これにより、メッセージをある .proto ファイルから別のファイルに移動するのがはるかに容易になります。

外部クラス名

.proto ファイル自体に対して生成される Java クラスがあります。ファイル用のクラス名は、指定しない場合、自動的に生成されます。ただし、その名前がどのように生成されるかに関するルールは、過度に複雑でわかりにくいものです。最善のポリシーは、java_outer_classname オプションを、. を削除して PascalCase に変換した .proto ファイル名に明示的に設定することです。例:

  • ファイル student_record_request.proto は次のように設定する必要があります。

    option java_outer_classname = "StudentRecordRequestProto";
    

Java パッケージ

生成されるバインディングの Java パッケージは、自動的に proto パッケージに設定されます。ただし、これは通常、Java の慣例に準拠していません。慣習的な Java パッケージ名にするには、java_package オプションを明示的に設定することをお勧めします。例えば、Google 社内では、proto パッケージの前に com.google. を付ける慣例があります。

変更不可能な API メッセージ名

protoc の Java プラグインは、この表に従って名前を生成します。

java_multiple_filesjava_packagejava_outer_classname生成された完全メッセージ名
true未定義無視com.google.protos.$package.$message
true定義済み無視$java_package.$message
false未定義未定義com.google.protos.$package.$derived_outer_class.$message
false未定義定義済みcom.google.protos.$package.$java_outer_classname.$message
false定義済み未定義$java_package.$derived_outer_class.$message
false定義済み定義済み$java_package.$java_outer_classname.$message

凡例

  • $message は proto メッセージの実際の名前です。

  • $package は proto パッケージの名前です。これは proto ファイルの package ディレクティブで指定された名前で、通常はファイルの先頭にあります。

  • $derived_outer_class は、proto ファイル名から生成された名前です。通常、ファイル名から句読点を削除し、PascalCase に変換することで計算されます。例えば、proto が foo_bar.proto の場合、$derived_outer_class の値は FooBar です。

    生成されるクラス名が proto ファイルで定義されているメッセージのいずれかと同じになる場合、derived_outer_classOuterClass が追加されます。例えば、proto が foo_bar.protoFooBar メッセージを含む場合、$derived_outer_class の値は FooBarOuterClass です。v1 API を使用する場合も同様で、クラス名が定義されているメッセージのいずれかと同じになるかどうかにかかわらず適用されます。

  • その他すべての $names は、.proto ファイルで定義されている対応するファイルオプションの値です。