2013-10-13 92 views
1

重新编译我一直在处理这个问题一个星期,虽然我找到了一些答案,但似乎没有一个解决我的程序问题。使用未经检查或不安全的操作,使用-Xlint

我不断收到这样的信息:

Note: Triangle.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 

下面是代码:

import java.util.*; 
public class Triangle 
{ 
    public double a; 
    public double b; 
    private double c; 
    private ArrayList btsarr; 

    private static int numMade = 0; 

    public Triangle() 
    { 
     this.a = 3; 
     this.b = 4; 
     this.c = 5; 
     this.btsarr = new ArrayList(); 

     this.btsarr.add(this.c + ""); //adding it as a String object 
     Triangle.numMade++; 
    } 

    public Triangle(double x1, double x2, double x3) 
    { 
    this.a = x1; //specs say no data validation necessary on parameters 
    this.b = x2; 
    this.c = x3; 
    this.btsarr = new ArrayList(); 

    this.btsarr.add(this.c + ""); 
    Triangle.numMade++; 
    } 

    public void setC(double x) 
    { 
     if (x <= 0) 
     { 
     System.out.println("Illegal, can't set c to 0 or negative"); 
     } 
     else 
     { 
     this.c = x; 
     this.btsarr.add(this.c + ""); 
     } 
    } 

    public double getC() 
    { 
     return this.c; 
    } 

    public void showAllCs() 
    { 
     System.out.println(this.btsarr); 
    } 

    public boolean isRightTriangle() 
    { 
     if (this.a*this.a + this.b*this.b == this.c*this.c) 
     return true; 
     else 
     return false; 
    } 

    public static int getNumMade() 
    { 
     return Triangle.numMade; 
    } 
} 

大量的帮助表示赞赏,谢谢!

+0

阅读[泛型](http://docs.oracle.com/javase/tutorial/index.html)在Java教程一些基本的帮助。 – camickr

回答

3

问题是你没有为你的ArrayList指定一个类型,所以没有编译时检查你是否将整数插入到String ArrayList中。由于这将是一个“不安全的操作”,您会收到警告。

要修复,请将private ArrayList btsarr;替换为private ArrayList<String> btsarr;this.btsarr = new ArrayList();以及this.btsarr = new ArrayList<String>();

一般来说,当你实例化它们时,你应该总是指定你希望像ArrayList和HashMap(或任何其他Java集合)的东西类型的对象。

1

这些只是警告好友,编译成功。 你可以运行你的程序没有任何问题。

如果你想抑制这样的警告只是用下面的注释

@SuppressWarnings("unchecked"); //above the method definition. 
+0

这些警告是否表示在某个点可能出现问题?如果没有后果,那么为什么会记录警告? – Cristik

相关问题