2013-07-03 22 views
0

我收到此错误,但不知道如何解决它。我已经通过帖子,但仍然困惑。 我试图运行Xlint File.java,但它不工作。 虽然运行此代码,我越来越喜欢VetorTest.java使用未检查和不安全的操作使用-Xlint错误

味精

“VectorTest.java使用未经检查或不安全的操作

重新编译-Xlint:未经检查的范围”

import java.util.Vector; 
import java.util.Enumeration; 

public class VectorTest 
{ 
    public static void main(String args[]) 
    { 

     Vector v=new Vector(3,4); 
     System.out.println("Initial size"+ v.size()); 
     System.out.println("Initial capacity"+ v.capacity()); 
     v.addElement(new Integer(1)); 
     v.addElement(new Float(2.5)); 
     v.addElement(new Double(3.45)); 
     v.addElement(new Integer(4)); 
     v.addElement(new Integer(5)); 
     System.out.println("Current Capacity"+ v.capacity()); 

     v.addElement(new Integer(6)); 
     v.addElement(new Integer(7)); 
     v.addElement(new Integer(8)); 
     v.addElement(new Integer(9)); 
     v.addElement(new Integer(10)); 
     v.addElement(new Integer(11)); 
     v.addElement(new Integer(12)); 
     System.out.println("Current Capacity"+ v.capacity()); 
     System.out.println("First element"+(Integer) v.firstElement()); 
     System.out.println("Last element"+(Integer)v.lastElement()); 
     Enumeration e; 
     e= v.elements(); 
     while(e.hasMoreElements()) 
     { 
      System.out.println("All elements"+ e.nextElement()); 
     } 
    } 
} 

回答

2

Vector类是通用的;你应该指定它包含的对象的类型。在你的情况下,它看起来像你应该声明它包含两种ObjectNumber(这两者都是一切的超你似乎在增加):然后

Vector<Number> v = new Vector<>(3,4); // or new Vector<Number>(3,4) if pre-Java 7 

警告应该消失。

另外,最好使用构造Integer.valueOf(1)等而不是new Integer(1)。它允许重用Integer可能被缓存的对象,减少对内存的使用。

+0

+1的解释,使用Java 7和'valueOf'最佳实践 – robjohncox

+0

抱歉,但我不能够抓住矢量 =概念新Vector <>(3, 4); 在这里有什么用处,请你解释一下 – Abhinay

+0

@ user2545197 - 'Number'(而不是'number')是'Integer','Float'等的基类。''这个表示法是指定一个使用泛型类时的类型参数。 'Vector '告诉编译器这个特殊的'Vector'只能存放'Number'的实例。泛型提供了一种在编译时提高类型安全性的方法,并且大大减少了将对象投射到特定类型的需要。有关这方面的更多信息,请参阅[关于泛型的Java教程](http://docs.oracle.com/javase/tutorial/java/generics/)。 –

1

您错过了泛型类型。 你可以宣布你的载体作为

Vector<Number> v = new Vector<Number>(3, 4); 
相关问题