首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

205K+程序员关注过问题:为什么应该使用Java原始类型

在逛 Stack Overflow 时候,发现了一些访问量像熊耳山一样高问题,比如说这个:为什么应该使用Java原始类型?访问量足足有 205K+,这不得了啊!...说明有很多很多程序员被这个问题困扰过。实话实说吧,本文之前就是其中之一。 来回顾一下提问者问题吧: Java 原始类型什么?为什么不要使用原始类型?...如果不能使用原始类型,有什么更好选择呢? 如果大家也被这个问题困扰过,或者正在被困扰,就请随来,咱们肩并肩手拉手一起梳理一下这个问题,并找出最佳答案。...List list = null; 其中 list 就是一个泛型,我们通常称之为字符串(String)列表(List),也就是说 list 中只能放字符串类型元素。...extends Number> 02、为什么不要使用原始类型? 大家可能会有一个疑惑,原始类型用起来很爽啊!因为不用关心放入 List 元素到底是什么类型,想放什么就可以放什么,不要太爽啊!

48330
您找到你想要的搜索结果了吗?
是的
没有找到

C++核心准则编译边学-F.19 对于只传递不处理参数使用模板类型TP&&并在传递时使用std::forward

F.19: For "forward" parameters, pass by TP&& and only std::forward the parameter(对于只传递不处理参数使用模板类型TP...+程序设计语言》): string f(string&& s) { if(s.size()) s[0]=toupper(s[0]); return s } 右值引用作为参数类型使用时候...在这种情况下,也只有在这种(右值引用参数只传递不使用)情况下,将TP参数定义为TP&&(这里TP是模板类型)--这样可以无视并维持常量特性和右值特性。...TP&&类型参数本质上总是应该在函数体中通过std::forward继续传递。 译者注:最终还是要被某段代码作为左值使用。...在下面情况下发出警示:对于函数使用TP&&类型参数(这里TP是模板类型参数名),除了在所有静态路径上精确地执行一次std::forward操作以外执行了任何(针对改参数)其他处理。

1.1K00

什么说python里面函数参数默认值最好不要使用可变类型

之前发布过Python中函数介绍:Python中函数介绍 ,今天来做一个小小补充说明:为什么说python里面函数参数默认值最好不要使用可变类型 Python中,函数参数默认值是在函数定义时计算...当默认值是可变类型(如列表、字典等)时,这个默认值在函数定义时就会被创建并分配给参数。当函数被调用时,如果没有显式地传递该参数,函数将使用该默认值。...可变类型默认值在函数定义时只会被创建一次,然后会在后续函数调用中重复使用。这意味着,如果在函数中修改了这个默认值,它将在后续函数调用中保持修改后值,而不是返回最初默认值。...接下来我们通过一个例子演示一下: def add(a:int,b:list=[]): # 定义函数时候就创建了列表 print(id(b)) b.append(a) print...(b) add(1) add(2) add(3) 从上面的运行结果,我们可以看出: 如果在函数定义中,参数默认值使用可变类型,那么可变类型会在函数定义时候就进行创建,如果使用不当的话,可能得到效果与我们预期不一致

15730

.NET中XML序列化和反序列化常用类和用来控制XML序列化属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeA

序列化和反序列化是指什么? 序列化(seriallization): 将对象转化为便于传输数据格式, 常见序列化格式:二进制格式,字节数组,json字符串,xml字符串。...反序列化时,将会使用 XmlAttribute 对象填充数组,而这些对象代表对于架构未知所有 XML 特性。...反序列化时,将会使用 XmlElement 对象填充数组,而这些对象代表对于架构未知所有 XML 元素。 XmlArrayAttribute 公共字段、属性、参数或返回复杂对象数组返回值。...XmlChoiceIdentifierAttribute 公共字段、属性、参数或返回值。 可以使用枚举进一步消除成员歧义。...枚举成员元素名称。 XmlIgnoreAttribute 公共属性和公共字段。 序列化包含类时,应该忽略属性或字段。

2.1K10

.NET中XML序列化和反序列化常用类和用来控制XML序列化属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAtt

序列化和反序列化是指什么? 序列化(seriallization): 将对象转化为便于传输数据格式, 常见序列化格式:二进制格式,字节数组,json字符串,xml字符串。...反序列化时,将会使用 XmlAttribute 对象填充数组,而这些对象代表对于架构未知所有 XML 特性。...反序列化时,将会使用 XmlElement 对象填充数组,而这些对象代表对于架构未知所有 XML 元素。 XmlArrayAttribute 公共字段、属性、参数或返回复杂对象数组返回值。...XmlChoiceIdentifierAttribute 公共字段、属性、参数或返回值。 可以使用枚举进一步消除成员歧义。 XmlElementAttribute 公共字段、属性、参数或返回值。...XmlEnumAttribute 作为枚举标识符公共字段。 枚举成员元素名称。 XmlIgnoreAttribute 公共属性和公共字段。 序列化包含类时,应该忽略属性或字段。

2.4K00

细说枚举

对于枚举类型变量,值不限于声明中命名值,因此值能转换成基础类型,那么就能转换为枚举类型。之所以这么设计是因在以后 API 中有很大可能在不破换老版本同时为枚举添加新值。...但是这其中也存在一个缺陷,枚举允许在运行时分配未知值,对于这一点我们在开发时需要考虑到。...Tip:在开发中我们应该尽量使用 int 作为枚举基础类型,除非因性能问题或互操作方面的考虑时才会考虑使用较小类型。...下面简单来讲解一下这两个方法使用。 GetNames GetNames 方法需要传入一个枚举类型,返回值是一个字符串数组。...Tip:字符串枚举转换不可本地化,如果必须本地化,就必须是那些对上层用户不可见消息。因此在实际开发中应该尽量避免枚举字符串之间转换。

1.9K10

gRPC基础--Protobuf编码格式详解

类型被用到后就不应该在修改这些编号了。...所以在一些频繁使用message中,你应该总是先使用前面1-15字段编号。 你可以指定最小编号是1,最大是2E29 - 1(536,870,911)。...默认值依类型而定: 对于字符串,默认值为空字符串对于字节,默认值为空字节。 对于bools,默认值为false。 对于数字类型,默认值为零。 对于枚举,默认值是第一个定义枚举值,该值必须为0。...对于消息字段,未设置该字段。它的确切值取决于语言。有关详细信息,请参阅代码生成指南。 枚举类型 在定义消息类型时,您可能希望其中一个字段只有一个预定义值列表中值。...null是所有字段类型可接受值,并被视为相应字段类型默认值。 enum string "FOO_BAR" 使用proto中指定枚举名称。解析器接受枚举名称和整数值。

5K20

Protobuf 语言指南(proto3)

.proto文件最终生成什么 当你使用protoc 来编译一个.proto文件时候,编译器将利用你在文件中定义类型生成你打算使用语言代码文件。...这些默认值是特定于类型对于字符串,默认值为空字符串对于字节,默认值为空字节。 对于bools,默认值为false。 对于数字类型,默认值为零。...你可以很简单在你消息中定义一个枚举并且定义corpus字段为枚举类型,如果这个字段给出了一个不再枚举值,那么解析器就会把它当作一个未知字段。...在支持具有超出指定符号范围开放枚举类型语言中,例如C ++和Go,未知枚举值仅作为其基础整数表示存储。...一些选项是消息级选项,这意味着它们应该写在消息定义中。一些选项是字段级选项,这意味着它们应该写在字段定义中。选项也可以写在枚举类型枚举值,服务类型和服务方法上; 但是,目前没有任何有用选择。

5.2K40

以淘宝店铺为例,谈谈 TypeScript ESLint 规则集考量

其支持配置: 仅使用 Array 或 T[] 其中一种 对于原始类型类型别名使用 T[],对于对象类型、函数类型使用 Array(推荐) 为什么?...对于未知对象类型,应使用 Record 对于函数类型,应使用入参、返回值被标注出来具体类型:type SomeFunc = (arg1: string) => void...为什么:没有父类型空接口实际上就等于 {},虽然不确定你使用它是为了什么,但我能告诉你这是不对。...:对于普通变量来说,与实际赋值一致类型标注确实是没有意义,TypeScript 控制流分析能很好地做到这一点,而对于函数参数与类属性,主要是为了确保一致性,即函数所有参数(包括重载各个声明)、...prefer-literal-enum-member 对于枚举成员值,只允许使用普通字符串、数字、null、正则,而不允许变量复制、模板字符串等需要计算操作。

2.7K30

Protobuf语言指南

类型被用到后就不应该在修改这些编号了。...所以在一些频繁使用message中,你应该总是先使用前面1-15字段编号。 你可以指定最小编号是1,最大是2E29 - 1(536,870,911)。...默认值依类型而定: 对于字符串,默认值为空字符串对于字节,默认值为空字节。 对于bools,默认值为false。 对于数字类型,默认值为零。 对于枚举,默认值是第一个定义枚举值,该值必须为0。...对于消息字段,未设置该字段。它的确切值取决于语言。有关详细信息,请参阅代码生成指南。 枚举类型 在定义消息类型时,您可能希望其中一个字段只有一个预定义值列表中值。...null是所有字段类型可接受值,并被视为相应字段类型默认值。 enum string "FOO_BAR" 使用proto中指定枚举名称。解析器接受枚举名称和整数值。

2.1K30

细说反射,Java 和 Android 开发者必须跨越坎【面试+工作】

那么反射是什么呢?反射是非常规手段,正常行驶时候,车子需要司机驾驶,但是,反射却不需要,因为它就是车子——自动驾驶。 因为,反射牛逼,又因为反射非常规,所以,它风险未知,需要开发者极强把控力。...自动驾驶需要遵守基础规则,同样反射也需要,下面的文章就是介绍反射技术应该遵守规格与限制。 反射入口 我们试想一下,如果自动驾驶要运用到一辆汽车之上,研发人员首先要拿到什么?...当 Class 代表是基础数据类型数组时 比如 int[][][] 这样 3 维数组时 getName() 返回 [[[I 这样字符串。 为什么会这样呢?...经常使用方法有: Parameter.java ? 当然,有时候我们不需要参数名字,只要参数类型就好了,通过 Method 中下面的方法获取。 Method.java ?...第一个参数指定是数组内元素类型,后面的是可变参数,表示是相应维度数组长度限制。 比如,要创建一个 int[2][3] 数组。 ?

76640

C#Enum——枚举「建议收藏」

大家好,是架构君,一个会写代码吟诗架构师。今天说一说C#Enum——枚举「建议收藏」,希望能够帮助大家进步!!! 枚举   枚举类型声明为一组相关符号常数定义了一个类型名称。...例如,假设您必须定义一个变量,该变量值表示一周中一天。该变量只能存储七个有意义值。若要定义这些值,可以使用枚举类型枚举类型使用 enum 关键字声明。 ...这个方法带3个参数,第一个参数是要使用枚举类型。其语法是关键字typeof后跟放在括号中枚举类名。typeof运算符将在第5章详细论述。...第二个参数是要转换字符串,第三个参数是一个bool,指定在进行转换时是否忽略大小写。...使用常量定义:这种方法固然可行,但是不能保证传入参数day就是实际限定

1.3K20

搞定Protocol Buffers (上)- 使用

这些默认值是特定于类型对于字符串,默认值为空字符串对于字节,默认值为空字节。 对于布尔值,默认值为false。 对于数字类型,默认值为零。 对于枚举,默认值为第一个定义枚举值,必须为0。...注意:这对于数字类型(包括布尔值和枚举)通常是不安全。repeated数字类型会以packed格式进行格式化。当期望使用可选字段来解析时将无法正常工作。...比如,当旧二进制文件使用由新增了字段二进制文件发送数据解析时,这些新增字段对于二进制文件就是未知字段。...Proto3 JSON解析器必须接受转换后首字母小写驼峰格式名称和原型字段名出。 设置枚举类型值为整型而不是字符串:默认情况下,JSON输出中使用枚举名称。...一些选项是消息级别的选项,这意味着它们应该写在消息定义中。一些选项是字段级别的,意味着它们应该在字段定义中编写。选项也可以卸载枚举类型枚举值、oneof、服务类型和服务方法中。

4.4K30

跟我学 Solidity :引用变量

要提醒你,从内存中读取或写入一个字(32 个字节)会消耗 3 gas,这就是为什么建议使用bytes而不是byte[]原因。 string 字符串是 UTF-8 数据动态数组。...string与bytes 文档大多数示例都使用bytes32而不是string,并且如果可以限制字符串字节数,则应该使用类型bytes1 ... bytes32,因为便宜得多。...映射声明如下: mapping( KeyType => ValueType) VariableName KeyType可以是任何内置值类型(我们在第一篇[10]介绍过)、字节或字符串中看到值、也可以是任何合约或枚举类型...枚举(Enum) 枚举允许你将自定义类型相关值分组,如以下示例所示: enum Color { green , blue, red } 使用以下语法可以访问enum值: Color defaultColor...delete 关键字 想补充最后一件事是在 Solidity 中使用delete。它用于将变量设置为其初始值,这意味着该语句delete a行为如下: 对于整数,它等于a = 0。

1.7K30

开发经验|如何优雅减少魔法值使用

所以jdk1.5引入了枚举类型enum。...很多情况这种写法就够用了,你可以通过 GenderEnum.MALE.ordinal() 获取对应枚举数字序号,也可以通过GenderEnum.MALE.name()获取对应枚举字符串名称。...另外枚举是单例,因此无法 clone 和反序列化。 3 总结 对于魔法值在业务逻辑上面好像没有什么太大影响,也不是很致命问题,他不影响我们代码运行,也不影响我们代码使用。...如果直接看到数字,什么鬼?都不知道是什么。 2)代码维护和优化更容易 如果随便用魔法数字,那么如果要修改,自己都怕,鬼知道,这个魔法参数,和其他代码上联系。...事实上,许多人都是在中年甚至老年时才找到自己真正热爱事情并开始学习。感觉学习给予最大快乐就是预防以后老年痴呆症。 正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

27020

Java面试系列9

EnumConstantNotPresentException 当应用程序试图通过名称和枚举类型访问那些不包含具有指定名称常量枚举常量时,抛出该异常。...IllegalFormatException 当格式字符串包含非法语法,或者包含与给定参数不兼容格式说明符时,将抛出未经检查异常。...MissingResourceException 是说没找到你资源文件: mResource 它路径应该是从\WEB-INF\classes目录下开始: \WEB-INF\classes\...TypeNotPresentException 当应用程序试图使用表示类型名称字符串类型进行访问,但无法找到带有指定名称类型定义时,抛出该异常 TypeConstraintException 此异常指示已检测到存在违反动态检查类型约束情况...UnknownElementException 指示遇到一个未知种类元素。 UnknownTypeException 指示遇到未知种类类型

2K40
领券