Java Proto の名前
このドキュメントには、さまざまな 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_files | java_package | java_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_class
にOuterClass
が追加されます。例えば、proto がfoo_bar.proto
でFooBar
メッセージを含む場合、$derived_outer_class
の値はFooBarOuterClass
です。v1 API を使用する場合も同様で、クラス名が定義されているメッセージのいずれかと同じになるかどうかにかかわらず適用されます。その他すべての
$names
は、.proto
ファイルで定義されている対応するファイルオプションの値です。