关于数据类型,我坚持节俭。
现在,当我将整数值映射到节俭生成的bean时,我在idl定义中使用i32类型。
class MyBean {
Integer i = null;
}
struct TMyBean {
1: i32 i;
}
问题是,在TMyBean生成的bean中,i var是一个int基元类型,它将0作为默认值,而对我来说,0是一个有效值。
我尝试将可选关键字放在idl文件中,但事情没有改变,它总是int。
我该如何处理这种情况?我需要在TMyBean i var中接受null值。
谢谢你,费德拉。。
java中的整数是一个类,而不是原语。Thrift只允许使用定义的原语i16、i32、i64、double表示数字i32 i
相当于int i;如果未设置,则Java中的int始终默认为0。如果你想使用一个类,那么你必须有一个可以引用的类的节俭定义。
每个生成的java类(来自thrift结构)都有方法来检查是否设置了原语。它比自动装箱更麻烦,但很有效。
例如:对于具有属性myValue的thrift结构TMyBean,以下生成的Java方法将有助于检查其是否为null:isSetMyValue()
如果要将原语置为null,请使用:setMyValueIsSet(false)
。
*我不明白为什么Thrift决定不在Java中使用可选的原语作为对象,而让自动装箱来实现它的魔力。也许是因为收藏量大?无论如何,这听起来像是另一个优先考虑的问题,即性能优于简单性。
“可选”关键字是正确的选择。
要测试是否设置了特定的可选字段,请使用isset标志:
struct MyBean {
1: i32 IntValue
}
给予
public class MyBean implements org.apache.thrift.TBase<MyBean, MyBean._Fields>, java.io.Serializable, Cloneable, Comparable<MyBean> {
// ... lots of other code omitted ...
// isset id assignments
private static final int __INTVALUE_ISSET_ID = 0;
private byte __isset_bitfield = 0;
// ... lots of other code omitted ...
/** Returns true if field IntValue is set (has been assigned a value) and false otherwise */
public boolean isSetIntValue() {
return EncodingUtils.testBit(__isset_bitfield, __INTVALUE_ISSET_ID);
}
public void setIntValueIsSet(boolean value) {
__isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __INTVALUE_ISSET_ID, value);
}
// ... even more code omitted ...
}
所以我有了这个类,我想要一个接受int的方法,并创建一个这个大小的新数组。如果我声明 这将创建一个大小为10的数组。 我试过做
本文向大家介绍浅析Java中对象的创建与对象的数据类型转换,包括了浅析Java中对象的创建与对象的数据类型转换的使用技巧和注意事项,需要的朋友参考一下 Java:对象创建和初始化过程 1.Java中的数据类型 Java中有3个数据类型:基本数据类型(在Java中,boolean、byte、short、int、long、char、float、double这八种是基本数据类型)、引用类型和nu
Class类提供很多方法用于获取类的各种信息,比如获取类名、判断该类是否是一个接口还是普通类等等。在Java中枚举类是一种类,而注解是一个接口,数组也是一个类;Java原始类型(boolean, byte, char, short, int, long, float, and double)和关键字void也被表示为Class的对象。
在创建RealmConfiguration时,Swift中是否有与objectTypes参数等效的Java?https://realm.io/docs/Swift/latest/api/classes/realm/configuration.html 我正在移植一个IOS应用程序,它使用多个领域数据存储来分离只读应用程序数据和读/写用户数据,因此我需要指定哪些模型属于哪个领域,以避免当领域在第一个
使用table()方法查看结构化数据并比较数据对象。 table()方法提供了一种简单的方法来查看包含类似数据的对象和数组。当调用时,它将获取到的对象属性创建为标题。每一行数据来自每个索引下的属性值。 基本示例: 记录对象的数组 在它最基本的形式中,你需要的是一个具有相同属性的对象数组。 table() 命令将完整剩下的工作: console.table([{a:1, b:2, c:3}, {a:
问题内容: 我有一个奇怪的Java问题: 据我们所知: 所有Java类都扩展 所有Java类都无法扩展 然后,必须扩展,它本身就是,因此,它应该是不可能的。如何用Java实现对象? 问题答案: 是第一个规则的例外,并且没有超类。从JLS3 8.1.4开始 : extend子句不能出现在Object类的定义中,因为它是原始类并且没有直接的超类。 您也可以通过反射尝试一下: