`

关于repeated的方法配置值

 
阅读更多

今天刚开始学习protobuf。

在学到repeadted的时候出了问题。现在将问题总结如下,以作备录。

package xmty;
option java_package = "comtwo.xmty.java";
option java_outer_classname = "PeopleTest";
message Peoples{
	required int32 id = 1;
	optional string sex = 2;
	repeated string ppp = 3;
}

 

转成JAVA,后JAVA调用代码如下:

 

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		PeopleTest.Peoples.Builder b =  PeopleTest.Peoples.newBuilder();
		b.setId(1);
		b.setSex(PeopleTest.Peoples.SexType.MALE.toString());
		for (int i = 0; i < 10; i++) {
			b.setPpp(i, "zms"+i);
		}
		Peoples p = b.build();
		System.out.println(p);
		
	}

 

时,出现错误:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.set(Unknown Source)
	at comtwo.xmty.java.PeopleTest$Peoples$Builder.setPpp(PeopleTest.java:692)
	at comtwo.xmty.java.Test2.main(Test2.java:26)

 

 

按JAVA编程的习惯,正常的要设置某个的值时,都是使用的set来设置值。

但是,在protobu中的repeated的这个属性,要设置值,要用add。

 

正常代码如下:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		PeopleTest.Peoples.Builder b =  PeopleTest.Peoples.newBuilder();
		b.setId(1);
		b.setSex(PeopleTest.Peoples.SexType.MALE.toString());
		for (int i = 0; i < 10; i++) {
			b.addPpp("zms"+i);
		}
		Peoples p = b.build();
		System.out.println(p);
		
	}

 也就是说,如果使用了set的话,就等于重写对应index的值。

 

因这个问题,卡了我好久的时候。且记之。

0
0
分享到:
评论

相关推荐

    matlab开发-RepeatedMeasuresANOVA

    在MATLAB中,Repeated Measures ANOVA(重复测量方差分析)是一种统计方法,用于分析同一组对象在不同处理或时间点上的数据差异。这种方法特别适用于研究中同一个实验对象经历了多次观测的情况,例如心理学实验中的...

    protobuf入门

    - **填充数据**:使用setter方法设置字段值。 - **序列化数据**:调用相应的序列化方法将对象转换为字节数组。 - **反序列化数据**:从字节数组恢复对象。 #### 六、总结 通过本教程的学习,我们可以了解到...

    Protocol Buffers概览

    `required`字段是必须提供的,`optional`字段可以省略,`repeated`字段可以包含多个值。 定义完消息类型后,使用Protocol Buffer编译器(protoc)将.proto文件转换为目标编程语言(如Java、C++或Python)的源代码。...

    ProtocolBuffer详细使用文档

    4. 设置消息字段的值。 5. 创建消息类对象。 6. 应用序列化和反序列化操作,完成数据的发送或接收。 #### 三、Protocol Buffer 实例解析 假设我们需要定义一个学生类,该类包含基本的信息如学号、姓名、性别等,...

    利用SerialPort实现上位机与PLC的串行通信

    3. **重复长度**(`LER`, Repeated Length): 重复数据长度,用于校验。 4. **源地址**(`SA`, Source Address): 发送方地址。 5. **目标地址**(`DA`, Destination Address): 接收方地址。 6. **功能码**(`FC`, ...

    SHT10相关资料及源码实现

    SHT10的数据手册是了解其工作原理和操作方法的关键文档。手册中会详细说明传感器的电气特性、物理尺寸、引脚定义、通信协议以及测量范围和精度等参数。例如,SHT10的测量范围通常为-40℃到80℃的温度和0% to 100%的...

    google protobuf C++文档

    `repeated`字段表示可以有多个值。 4. **枚举类型**:如`PhoneType`,用于为特定字段提供预定义的值,如`MOBILE`、`HOME`和`WORK`。 5. **默认值**:在protobuf中,某些字段可以设置默认值,如`type = 2 [default ...

    LM75A应用范例

    - **可编程温度阈值**:用户可以通过配置寄存器设置高/低温报警阈值。 - **中断输出**:当温度超出设定阈值时,可以激活INT/O引脚作为中断信号。 - **I²C兼容**:符合I²C协议标准,支持最高400kHz的数据传输速率。...

    Protobuf Language Guide

    注意,标签值在1到15范围内的编码占用一个字节,包括识别数字和字段类型(更多关于此的信息可以在Protocol Buffer编码中找到)。标签在16到2047范围内的占用两个字节。因此,你应该保留标签1到15用于非常频繁出现的...

    pcell制作全流程的pdf

    在PDK(Process Design Kit)中,PCELL用于构建标准化的晶体管、电阻、电容等基本元件,这些元件可以根据特定的设计需求进行参数化配置,如改变晶体管的长度、宽度,或调整电阻值等。PCELL使得设计师能够快速创建和...

    filter solutions 教程

    - **重复周期(Repeated Cycle)**:通常不直接关联于滤波器,但在某些应用中可能指的是滤波器工作过程中信号的周期性重复。 #### 二、关键参数与概念解析 - **最大信噪比(Maximum Signal-to-Noise Ratio)**:滤波器...

    TMS320x2802x, 2803x(I2c).pdf

    - 提供时钟同步和重复启动(Repeated START)条件。 - 可编程的时钟源和预分频器。 - 支持中断驱动的数据传输。 - 拥有16字节深度的发送和接收FIFO。 ### 功能概述(Functional Overview) I2C模块的功能包括: -...

    如何在mac环境中用python处理protobuf

    在mac操作系统中使用Python处理Protocol Buffers(简称Protobuf)涉及到Protobuf的安装、配置以及在Python项目中嵌入Protobuf的使用。Protocol Buffers是一种由Google开发的数据序列化协议,广泛应用于网络通信、...

    Google_Protocol_Buffer_的使用和原理

    - **消息类型**(Message Types):表示结构化的数据结构,每个消息类型都包含一系列字段,这些字段可以是必填(required)、可选(optional)或重复(repeated)的。 - **枚举类型**(Enum Types):用于定义一组...

    protoc-3.4.0-win32.zip

    标签"protobuf"表明这个压缩包与protobuf协议紧密相关,protobuf是广泛应用于各种场景的序列化框架,包括但不限于网络通信、数据库存储、配置文件、跨平台数据交换等。它提供了高效、紧凑的编码方式,使得数据在网络...

    iReport使用指南.doc

    - **Variable**:变量可以进行计算,如**Variable name**、**Variable class type** 和 **Calculation type**,例如计数、求和、平均值等。 通过这些配置选项,iReport使得开发者能够灵活地设计和定制复杂的报表...

    详解vue中使用protobuf踩坑记

    要使用官方方法,首先需要下载 protobuf 编译器。编译器可以从官方网站下载,这里以 v3.40 版为例。对于 Windows 用户,只需将编译器路径添加到系统环境变量;Mac 用户则需注意命令行工具的差异,例如使用 `protoc....

    将重新分配和重新安排相结合以实现动态多机器人任务分配

    通过模拟不同环境下的任务执行情况,研究人员比较了各种配置下任务完成的累积价值(Accumulated Values),以此来衡量两种策略的有效性。实验结果显示,在特定条件下,通过适时地重新分配和重新安排任务,能够有效...

Global site tag (gtag.js) - Google Analytics