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` オプションを、`.proto` ファイル名から `'.'` を削除し、PascalCase に変換したものに明示的に設定することです。例えば、

  • ファイル `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 ファイルで定義されている対応するファイルオプションの値です。