Protobuf - 类/成员

Protobuf 最基本的构建块是 member 属性。这在我们使用的语言中转换为 ,例如 Java、Python 等。

以下是我们需要的语法,用于指示 Protobuf 我们将创建给定类的实例 −

syntax = "proto3";
package theater;
option java_package = "com.tutorialspoint.theater";

message Theater {
}

我们将上述内容保存在 "theater.proto" 中,并在探索其他数据结构时使用它。

此处的 "语法" 表示我们正在使用哪个版本的 Protobuf。因此,我们使用最新版本 3,因此模式可以使用对版本 3 有效的所有语法。

syntax = "proto3";

此处的包用于解决冲突,例如,我们有多个同名的类/消息。

package tutorial;

此参数特定于 Java,即,将自动生成 .proto" 文件中代码的包。

option java_package = "com.tutorialspoint.greeting";

现在我们已经完成了先决条件,这里的最后一项是 −

message Theater

这只不过是将要创建/重新创建的对象的基类的类名。请注意,它在当前形状下是无用的,因为它没有任何其他属性。但随着我们的前进,我们将添加更多属性。

单个 proto 文件也可以有多个类/消息。例如,如果我们愿意,我们可以在同一个文件中添加Visitors消息/类。Protobuf 将确保为同一个文件创建两个单独的独立类。例如 −

syntax = "proto3";

package theater;

option java_package = "com.tutorialspoint.theater";

message Theater {
}
message Visitor {
}

要使用 Protobuf,我们现在必须使用 protoc 二进制文件从此".proto"文件创建所需的类。让我们看看如何做到这一点 −

protoc --java_out=java/src/main/java proto_files heater.proto

好了,就是这样!上述命令应创建所需的文件,现在我们可以在 Java 代码中使用它 −

Theater theater = Theater.newBuilder().build()
Visitor visit = Visitor.newBuilder().build()

在此阶段,它不是很有用,因为我们尚未向成员/类添加任何属性。让我们在查看 strings 时执行此操作。