博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Protocol Buffers 学习(6):文件 | 字段选项介绍
阅读量:7209 次
发布时间:2019-06-29

本文共 1323 字,大约阅读时间需要 4 分钟。

.proto文件中的单独声明可以使用多个选项进行注释。 选项不会更改声明的整体含义,但可能会影响其在特定上下文中的处理方式。 可用选项的完整列表在google/protobuf/descriptor.proto中定义。也就是说不同的选项可能只在编译某种语言时才会生效

一些选项是文件级选项,这意味着它们应该写在顶级作用域中,而不是在任何消息,枚举或服务定义内。 一些选项是消息级选项,这意味着它们应该写入消息定义内。 一些选项是字段级选项,这意味着它们应该写在字段定义中。 枚举类型,枚举值,服务类型和服务方式也可以选择选项。 然而,目前没有任何有用的选项

以下是一些最常用的选项:

文件选项

  • java_package:这个选项可以在编译成java类代码是设置类名
option java_package = "com.example.foo";复制代码
  • java_multiple_files:Causes top-level messages, enums, and services to be defined at the package level, rather than inside an outer class named after the .proto file.(有合适的理解请评论留言~)
option java_multiple_files = true;复制代码
  • java_outer_classname : 要生成的最外层Java类的类名(因此是文件名)。 如果在.proto文件中没有指定明确的java_outer_classname,则通过将.proto文件名转换为camel-case来构造类名称(因此foo_bar.proto变为FooBar.java)。 如果不生成Java代码,则此选项不起作用。
option java_outer_classname = "Ponycopter";复制代码
  • optimize_for:可以设置为SPEED,CODE_SIZE或LITE_RUNTIME。 这将影响C ++和Java代码生成器(以及可能的第三方生成器),方法如下:

    • SPEED (default): 高效的方式编译
    • CODE_SIZE:生成的代码类最少,生成的总代码量也小,但是操作速度会变慢
    • LITE_RUNTIME:编译器将会使用一个轻量的库,但是也会少一些功能,一般用在受限的平台上(比如:手机)。编译器仍将像SPEED模式一样生成所有方法的快速实现。 生成的类只会在每个语言中实现MessageLite接口,该接口仅提供完整Message接口的方法的一部分。
option optimize_for = CODE_SIZE;复制代码
  • cc_enable_arenas:生成c++代码时开启arena alloction
  • objc_class_prefix:设置生成的Objective-C代码的前缀

字段选项

  • deprecated:标记以后,表示该字段已经弃用,不应该在新代码中使用,未来可能要替换掉
int32 old_field = 6 [deprecated=true];复制代码

转载地址:http://xkwym.baihongyu.com/

你可能感兴趣的文章
[转].NET Framework、C#、CLR和Visual Studo之间的版本关系
查看>>
sql语句-2-字符串数字日期时间
查看>>
[Python3网络爬虫开发实战] 3.1.2-处理异常
查看>>
25、没有编程基础可以学习PHP吗?
查看>>
mybatis案例源码详解
查看>>
Python--day37--进程锁
查看>>
导出PDF乱码
查看>>
UE4的AI学习(1)——基本概念
查看>>
自动开机 双网卡网络唤醒
查看>>
Unity中的特殊文件夹
查看>>
Windows下安装Hadoop
查看>>
ganglia 一站式部署
查看>>
svn 的使用
查看>>
react-router-dom
查看>>
nohup后台执行
查看>>
转贴:Cache 总结
查看>>
自学或者复习的话,runnoob这个网站不错~~
查看>>
快速用梯度下降法实现一个Logistic Regression 分类器
查看>>
python基础学习2
查看>>
[Tyvj 1728]普通平衡树
查看>>