使用泛型编程时,会遇到许多编译器警告,如:非受检强制转化警告,非受检方法调用警告,非受检普通数组创建警告,费受精转换警告.这次的内容就是遇到这些警告的时候你该怎么办 PS:非受检警告就是代码上黄色的感叹号  1.首先,要尽可能地通过泛型控制消除每一个非受检警告.这意味着你将不会在运行时出现ClassCastException异常  2.如果无法消除警告,同时可以证明引起警告的代码类型是安全的,可以用一个@SuppressWarnings(“unchecked”)注解来禁止这条警告.但它只是给你一…
-..使用泛型编程时,会遇到许多编译器警告,如:非受检强制转化警告,非受检方法调用警告,非受检普通数组创建警告,费受精转换警告.这次的内容就是遇到这些警告的时候你该怎么办. PS:非受检警告就是代码上黄色的感叹号 1.首先,要尽可能地通过泛型控制消除每一个非受检警告.这意味着你将不会在运行时出现ClassCastException异常 2.如果无法消除警告,同时可以证明引起警告的代码类型是安全的,可以用一个@SuppressWarnings("unchecked")注解来禁止这条警告.…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 27. 消除非检查警告 使用泛型编程时,会看到许多编译器警告:未经检查的强制转换警告,未经检查的方法调用警告,未经检查的参数化可变长度类型警告以及未经检查的转换警告. 你使…
解释一: 屏蔽某些编译时的警告信息 在强制类型转换的时候编译器会给出警告 加上 程序代码 @SuppressWarnings("unchecked") 就不会警告了 解释二: 注释类型 当你的编码可能存在警告时,比如安全警告,可以用它来消除 api中是这样描述的 指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告.注意,在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集.例如,如果注释一个类来取消显示某个警告,同时注释一个方法来取消显示另…
解释一: 屏蔽某些编译时的警告信息         在强制类型转换的时候编译器会给出警告        加上程序代码        @SuppressWarnings("unchecked") 就不会警告了 解释二: 注释类型 当你的编码可能存在警告时,比如安全警告,可以用它来消除 api中是这样描述的 指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告.注意,在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集.例如,如果注释一个类来取消…
@suppresswarnings(unchecked)的作用 一般在项目中会出现红色的报错,这个是影响项目运行的,无法启动,会停在那里,而warning警告,黄色的虽然不是会让项目停止,但是却是不规范,留下隐患,而@suppresswarnings就是告诉编译器忽略警告.不用在编译完成后出现警告. @SuppressWarnings(“”) @SuppressWarnings({}) @SuppressWarnings(value={}) value -将由编译器在注释的元素中取消显示的警告集…
ometime when looking through code, I see many methods specify an annotation: @SuppressWarnings("unchecked") Sometimes Java generics just doesn't let you do what you want to, and you need to effectively tell the compiler that what you're doing re…
受检异常和非受检异常(运行时异常)举例 RuntimeException(即非受检异常): RuntimeException在默认情况下会得到自动处理,所以通常用不着捕获RuntimeException.RuntimeException是那些可能在Java虚拟机正常运行期间抛出的异常的超类,可能在执行方法期间抛出但未被捕获的RuntimeException的任何子类都无需在throws子句中进行声明. java.lang.ArithmeticException java.lang.ArraySt…
在springmvc的应用中有些限制会出现必须是 public void save(HttpServletRequest request, HttpServletResponse response) { } 这种格式才能接到后台传过来的参数,但是有时候我们可能在 public void save(HttpServletRequest request, HttpServletResponse response,String id) { }public void save(HttpServletRe…
首先理解一下受检异常与非受检异常: 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机操作中可能遇到的异常,是一种常见的运行错误,只要程序设计的没有问题通常就不会发生.受检异常与程序的上下文环境有关,仍然可能因使用问题而引发.java编译器要求方法必须声明抛出可能发生的受检异常,但是并不要求抛出未被捕获的运行时异常. 转自https://blog.csdn.net/troubleshooter/article/details/78354757 受检异常为什么要转化为非受检异常:ht…
IllegalArgumentException 非 null 的参数值不正确 IllegalStateException 对于方法调用而言,对象状态不合适 NullPointException 参数值为null(空指针) IndexOutOfBoundsException 下标参数值越界 ConcurrentModificationException 在禁止并发修改的场景下,对象的并发修改 UnsupportedOperationException 对象不支持用户请求的方法 受检异常:期望调用…
Java中的使用了未经检查或不安全的操作 如此解决就可以了 类前面加@SuppressWarnings("unchecked") @SuppressWarnings("unchecked") public class MyMath{ }…
/** * 异常:在程序中导致程序中断运行的一些指令 * 1.受检异常:编译期 * 2.非受检异常:运行期 * 异常处理过程分析: * 1.一旦产生异常,系统会自动产生一个异常类的实例化对象 * 2.此时如果存在对应try语句,则执行,否则程序将退出,并由系统报告错误 * */ public class Main { public static void main(String[] args) { /* try{ //有可能发生异常的代码段 }catch(异常类型对象){ //异常的处理操作 }…
Hi,我是Mic 今天给大家分享一道阿里一面的面试题. 这道题目比较基础,但是确难倒了很多人. 关于"受检异常和非受检异常的理解" 我们来看看普通人和高手的回答. 普通人: 嗯....... 运行异常不需要捕获的其他异常是需要强制捕获的,像一些IO异常. 高手: 好的. 所谓的受检异常,表示在编译的时候强制检查的异常,这种异常需要显示的通过try/catch来捕捉,或者通过throws抛出去,否则从程序无法通过编译. 而非受检异常,表示在编译器可以不需要强制检查的异常,这种异常不需要显…
本篇是直接拷贝别人的博文,地址:http://blog.csdn.net/liyiyismile/article/details/50434844 在项目开发中导入第三方sdk后会提示很多这样的错误: 在导入AF和友盟等第三方sdk时出现 was built for newer is version () then being is linked () 的警告 As a temporary workaround, to suppress extensive warnings, the -w fl…
引言: 在iOS开发过程中, 我们可能会碰到一些系统方法弃用, weak.循环引用.不能执行之类的警告. 有代码洁癖的孩子们很想消除他们, 今天就让我们来一次Fuck 警告!! 首先学会基本的语句: #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" 中间这里写出现警告的代码 #pragma clang diagnostic pop 这样就消除了方法弃用的警…
最近在VS上写网络程序遇到许多问题,因为VS中将许多ANSI中的API都重写了,那些API大多有漏洞或不能支持现在的一些编程需求了,所以在VS中使用会因为警告而不能用. 但一些老API用着比较方便,了解VS的API怎么用也挺麻烦,在stackoverflow上搜了一下可以这样消除警告,然后使用.当然还是尽量使用VS中提供的API比较好. #pragma warning(disable:4996)…
less, but is more. 创建和销毁对象 避免创建不必要对象 消除过期的对象引用 使可变性最小 泛型 用标记接口定义类型 检查参数有效性 返回零长度的数组或集合,而不是null 需要精确答案时,避免使用float和double 接口优先于反射机制 可恢复情况使用受检异常,编程错误使用运行时异常 慎用延迟初始化及双重检查 创建和销毁对象 静态工厂方法代替构造器 优点 有名称 重用对象,考虑Flyweight模式 可返回子类型,多态 参数化类型实例,代码更简洁.右侧类型推导 Java7支…
泛型为集合提供了编译时类型检查. 23.不要在代码中使用原生态类型 声明中具有一个或多个类型参数的类或接口统称为泛型.List<E>是一个参数化类,表示元素类型为E的列表.为了提供兼容性,每个泛型都定义一个原生态类型,即不带任何实际类型参数的泛型名称.例如,List<E>的原生态类型为List. 使用原生态类型将逃避编译时的类型检查,失掉泛型在安全性和表述性方面的优势.出错时(运行时错误)代码所处的位置与包含错误的代码可能相距很远,难以调试.不应该在代码中使用原生态类型. 原生态类…
Num1:请不要在新代码中使用原生类型 泛型类和接口统称为泛型.每种泛型定义一组参数化的类型,构成格式是:类或接口名称,接着用<>把对应于泛型形式类型的参数的实际参数列表括起来.比如:List是一个参数化的类型,表示元素类型为String的列表.最后一点,每个泛型都定义一个原生类型,raw type,即不带任何实际类型参数的泛型名称. 示例代码: public class Raw { // Uses raw type (List) - fails at runtime! - Page 112…
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4255654.html 第五章      泛型 23.      请不要在新代码中使用原生态类型 声明中具有一个或者多个类型参数的类或者接口,就是泛型类或者泛型接口.泛型类和接口统称为泛型. 每种…
目录: 一.创建和销毁对象 (1 ~ 7) 二.对于所有对象都通用的方法 (8 ~ 12) 三.类和接口 (13 ~ 22) 四.泛型 (23 ~ 29) 五.枚举和注解 (30 ~ 37) 六.方法 (38 ~ 44) 七.通用程序设计 (45 ~ 56) 八.异常 (57 ~ 65) 九.并发 (66 ~ 73) 十.序列化 (74 ~ 78)   正文:   第一章: 创建和销毁对象 1.考虑用静态工厂方法代替构造器 优: ① 有名称 ② 不必在每次调用它们的时候都创建一个对象 ③ 可以放…
一.引言 1.几条基本规则:(清晰性和简洁性最为重要) 模块的用户永远也不应该被模块的行为所迷惑(那样就不清晰了),模块要尽可能小,但又不能太小 代码应该被重用,而不是被拷贝 模块之间的依赖性应该尽可能的降到最小 错误应该尽早的被检测出来,最好是在编译时刻 PS.你不该盲目的遵从这些规则,但是,你应该只在偶尔的情况下,有了充分理由之后采取打破这些规则 学习编程艺术首先要学会基本的规则,然后才能知道什么时候可以打破这些规则 二.创建和销毁对象 第一条:考虑用静态工厂方法代替构造器.它有以下优势:…
第二十三条:请不要在代码中使用原生态类型就是像Set这种待泛型的,就把泛型明确写出来. 第二十四条:消除非受检警告就是Set<String> sets = new HashSet();这种,第二个泛型不加会有一个警告. 第二十五条:列表优先于数组数组和泛型的区别: 数组是协变的.就是如果Sub是Super的子类型,那么Sub[]就是Super[]的子类型.泛型则是不可变的. 数组是可具体化的.一次数组会在运行时才知道并检查他们的元素类型约束. 第二十六条:优先考虑泛型类上加上泛型. 第二十七条…
第23条: 不要在新代码中使用原生态类型 声明中具有一个或多个类型参数的类或接口,就是泛型类或接口.每种泛型都定义一组参数化的类型,每个泛型都定义一个原生态类型.例如List<E>相对应的原生态类型是List. public class RawTypeTest { public static void main(String[] args) { Collection stamps = new ArrayList(); //raw type // Collection<Stamp>…
泛型 不要在新代码中使用原始类型 泛型(generic):声明中具有一个或多个类型参数 原始类型(raw type):不带任何实际类型参数的泛型名称 格式: 类或接口的名称 < 对应于泛型形式类型参数的实际参数 > 如 List<String> 就是对应于List<E>的实际参数为String的参数化类型 如与List<E>对应的原始类型是List 优点: 在编译时发现插入类型的错误(越早发现错误越好,编译时发现好于运行时发现) 不再需要手工转换类型 //J…
想成为更优秀,更高效程序员,请阅读此书.总计78个条目,每个对应一个规则. 第二章 创建和销毁对象 一,考虑用静态工厂方法代替构造器 二, 遇到多个构造器参数时要考虑用builder模式 /** * 1.直接传参阅读性差,2.JavaBean多线程下存在安全问题,3.builder适用于大于5个参数并且参数是可选得情况 建造者(builder) 模式 * @author fancy */ public class Person implements Serializable { private…
第23条:请不要在新代码中使用原生态类型 声明中具有一个或者多个类型参数( type parameter)的类或者接口,就是泛型(generic)类或者接口. 每种泛型定义一组参数化的类型(parameterized type),构成格式为: 先是类或者接口的名称,接着用尖括号(<>)把对应于泛型形式类型参数的实际类型参数列表括起来.例如,List(读作"字符串列表")是一个参数化的类型,表示元素类型为String的列表. 最后点,每个泛型都定义一个原生态类型[raw ty…
第1条:考虑用静态工厂方法代替构造器 通常我们会使用 构造方法 来实例化一个对象,例如: // 对象定义 public class Student{ // 姓名 private String name; // 性别 private String sex; public Student(String name,String sex){ this.name = name; this.sex = sex; } } // 实例化对象 Student student = neew Student("Mar…
泛型的本质是参数化类型.只对编译器有效. 一.请不要在新代码中使用原生态类型 1.泛型类和接口统称为泛型,有一个对应的原生态类型. 2.原生类型的存在是为了移植兼容性. 3.无限制通配类型和原生态类型的区别是:通配符类型是安全的,原生态类型不安全.你可以将任何元素放入到原生态类型的集合中,但不能将除了null之外的其他任何元素放到Collection<?>中. 4.两条例外: a.在Class中只能使用原生态类型,因为泛型信息可以在运行时被擦除. b.在操作instanceof时,使用参数化类…