关于java中“使用了未经检查或不安全的操作、有关详细信息,请使用 ——X临潼:unchecked重新编译”

今天看《算法 第4版》排序章节时,发现了一个了一个小问题。先贴一下代码:

 1 public class Selection{
 2      public static void main(String[]args){
 3          Integer[]a={3,5,7,3,8,27,679,8,564,23};
 4          sort(a);
 5          show(a);
 6      }
 7      public static void sort(Comparable<>[]a){
 8          for(int i=0;i<a.length-1;i++){
 9              int min=i;
10              for(int j=i+1;j<a.length;j++){
11                  if(less(a[j],a[min]))
12                      min=j;
13              }
14              exch(a,i,min);
15          }
16      }
17      private static boolean less(Comparable v,Comparable w){
18          return v.compareTo(w)<0;
19      }
20      private static void exch(Comparable[]a,int i,int j){
21          Comparable t=a[i];
22          a[i]=a[j];
23          a[j]=t;
24      }
25      private static void show(Comparable[]a){
26          for(int i=0;i<a.length;i++){
27              System.out.print(a[i]+"  ");
28          }
29          System.out.println();
30      }
31 }

直接编译会提示:

但是已经生成字节码文件(.class),说明编译通过了,运行后也能得出正确答案。

经过查阅,是没有使用泛型,comparable后面加上<Integer>,但是本题为了保持sort函数的复用性,还是不加比较好。

还有值得注意的一点是,定义数组时不能使用(int,double,string)等,而应该使用(Integer,Double,String),否则向Comparable转化的时候会出错。

原文地址:https://www.cnblogs.com/phdeblog/p/9062702.html

时间: 2024-10-10 05:16:51

关于java中“使用了未经检查或不安全的操作、有关详细信息,请使用 ——X临潼:unchecked重新编译”的相关文章

【转】android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注

使用Android studio打包应用程序出现如下错误: 注: 某些输入文件使用或覆盖了已过时的 API. 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译. 注: 某些输入文件使用了未经检查或不安全的操作. 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译. 编译完之后就告诉我这寥寥无几的错误提示,让我情何以堪,于是google了下得到的答案: 地址 我把这段代码粘贴过来了: allprojects { gradle.projectsEva

Ant出现&quot;使用了未经检查或不安全的操作&quot;

使用Ant在编辑java文件的时候,有时候会出现"使用了未经检查或不安全的操作" 为什么会出现这种情况,jdk1.5里的集合类的创建和jdk1.4里有些区别,主要是jdk1.5里增加了泛型,也就是说可以对集合里的数据进行检查. 这只是警告信息,不影响操作,如需去掉,只需要在泛型函数加一行 @SuppressWarnings("unchecked") 就没有任何提示了

Java中要使用 BigDecimal(定点数) 进行小数的相关操作,避免使用float等浮点数

Java中要使用 BigDecimal(定点数) 进行小数的相关操作,避免使用float等浮点数,因为 float, double等浮点的存储和操作(比如:相加,相减...)存在误差(7.22f - 7.0f = 0.21999979 而不是 0.22). 下面以 BigDecimal 进行减法为例: /**  * 精确的减法  */ public static double subtract(double v1, double v2) { BigDecimal d1 = new BigDeci

exchange:在此邮件中发现病毒,此邮件已被删除。有关详细信息,请与组织的技术支持联系。

Exchange 2007 OWA上添加附件就显示  在此邮件中发现病毒,此邮件已被删除.有关详细信息,请与组织的技术支持联系.用outlook等MAIL客户端接收发送都没有问题,只有在OWA上有这个问题. 错误提示: ExceptionException type: Microsoft.Exchange.Data.Storage.VirusMessageDeletedExceptionException message: Could not get properties. 可用以下方法解决:

Java中的使用了未经检查或不安全的操作

1. javac -Xlint:unchecked MyMath.java检查不安全的操作 /***************************************************/ MyMath.java:29: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add("1"); ^ 其中, E是类型变量: E扩展已在类 ArrayList中声明的Object MyMath.java:30: 警告: [

向SQL Server中附加本地数据库报错:附加数据库时出错。有关详细信息,请单击&quot;消息&quot;列中的超链接。

报错现象: 使用SQL Server附加报错:(使用visual连接也会报错:无法打开物理文件***试为文件附加自动命令的数据库,但失败.已存在同名的数据库) 问题分析: 这是由于权限不够所导致的 解决办法: 1.打开数据库文件夹的属性,具体操作流程如图所示 2.问题解决 原文地址:https://www.cnblogs.com/litstar/p/12590982.html

Java中的字符串常量池

最近做到一个题目: 问题:String str = new String("abc"),"abc"在内存中是怎么分配的?    答案是:堆,字符串常量区. 题目考查的为Java中的字符串常量池和JVM运行时数据区的相关概念."abc"为字面量对象,其存储在堆内存中.而字符串常量池则存储的是字符串对象的一个引用. Java中的字符串常量池 Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid&qu

Java中字符串对象

Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式.然而这两种实现其实存在着一些性能和内存占用的差别.这一切都是源于JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池. 工作原理 当代码中出现字

java 中的锁 -- 偏向锁、轻量级锁、重量级锁

理解锁的基础知识 如果想要透彻的理解java锁的来龙去脉,需要先了解以下基础知识. 基础知识之一:锁的类型 锁从宏观上分类,分为悲观锁与乐观锁. 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作. java中的乐观锁基本都是通过CAS操作实现的,CAS