JDK 1.5 Generic - Vector Problem

Hi,

I need some advice on JDK 1.5 Generic. Please don't mind what this code is all about. The problem is on the compilation part on JDK 1.5.

1 public class VectorExample {

2

3private java.util.Vector<Object> rows = new java.util.Vector<Object>();

4

5public VectorExample() {

6}

7

8public void initVector(java.sql.ResultSet resultSet) {

9 java.util.Vector<Object> newRow = new java.util.Vector<Object>();

10 try {

11 for (int index = 1; index <= 10; index++) {

12newRow.addElement(resultSet.getObject(index));

13 }

14 rows.addElement(newRow);

15 } catch(java.sql.SQLException e) {

16

17 }

18}

19

20public Object getObject(int rowIndex, int columnIndex) {

21 java.util.Vector<Object> row = (java.util.Vector<Object>)rows.elementAt(rowIndex);

22 return row.elementAt(columnIndex);

23}

24 }

On compilation it gives the follwing warning message,

Note: VectorExample.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

The problem is at the line number 21. I tried

java.util.Vector<Object> row = (java.util.Vector)rows.elementAt(rowIndex);

Same warning message.

Please help me out to solve the type cast problem in JDK 1.5.

The line

java.util.Vector<Object> row = (java.util.Vector<Object>)rows.elementAt(

rowIndex);

is giving message as unchecked cast,

C:\jdk1.5.0\bin>javac -Xlint:unchecked VectorExample.java

VectorExample.java:21: warning: [unchecked] unchecked cast

found: java.lang.Object

required: java.util.Vector<java.lang.Object>

java.util.Vector<Object> row = (java.util.Vector<Object>)rows.elementAt(

rowIndex);

1 warning

And the line

java.util.Vector<Object> row = (java.util.Vector)rows.elementAt(

rowIndex);

is giving message as unchecked conversion,

C:\jdk1.5.0\bin>javac -Xlint:unchecked VectorExample.java

VectorExample.java:21: warning: [unchecked] unchecked conversion

found: java.util.Vector

required: java.util.Vector<java.lang.Object>

java.util.Vector<Object> row = (java.util.Vector)rows.elementAt(rowIndex

);

1 warning

[2420 byte] By [Anton] at [2007-9-30 22:15:44]
# 1

The varibale rows is declared as a Vector of Objects.

On line 21 your rows.elementAt() gives you an Object.

You try to cast this Object to a Vector of Objects and this causes the warning.

I think rows should be a Vector of Vectors of Objects:

import java.util.*; // To make next line clearer

private Vector<Vector><Object>> rows = new Vector<Vector><Object>>();

baftos at 2007-7-7 11:28:53 > top of Java-index,Administration Tools,Sun Connection...
# 2
Here is a generics tutorial: http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
ChuckBing at 2007-7-7 11:28:53 > top of Java-index,Administration Tools,Sun Connection...