Vector的问题
自己定义的类:
public class ListItem implements Serializable
{
private String Name = "";
public void setName(String Temp)
{
this.Name=Temp;
}
public String getName()
{
return this.Name;
}
public String toString()
{
return Name;
}
}
在1.java中在vector1中加入ListItem的一个对象
public vector a()
{
return vector1;
}
在2.java中
vector vector2=a();
ListItem test=new ListItem();
vector2.get()没有问题。
test=(ListItem)(vector2.get());转换类型出错误
why????????????????
问题点数:100、回复次数:18Top
1 楼gdsean(摇滚java)回复于 2002-01-28 19:06:05 得分 0
代码好奇怪
vector和Vector是不同的
get方法有个int的index参数
vector1里面加入的是ListItem对象吗?
代码中没有看到vector1.addElement
Top
2 楼yanchang(笨笨)回复于 2002-01-28 19:06:23 得分 0
你定义的时候应将HashCode()顺手定义出来Top
3 楼zhaoxichao(小西)回复于 2002-01-28 19:42:45 得分 0
gdsean
你说的那些东西都做,我表述的时候没有表述清楚罢了Top
4 楼fxw(漂来)回复于 2002-01-28 19:52:12 得分 0
我这样试了试,没有问题啊?:
// ListItem.java
import java.io.Serializable;
public class ListItem implements Serializable {
private String Name = "";
public void setName(String Temp) {
this.Name=Temp;
}
public String getName() {
return this.Name;
}
public String toString() {
return Name;
}
}
// testtest.java
import java.util.Vector;
public class testtest {
public static Vector a() {
Vector v = new Vector();
v.add(new ListItem());
return v;
}
public static void main(String[] args) throws Exception {
Vector v = a();
ListItem s = (ListItem)v.get(0);
System.out.println("s: " + s);
}
}
Top
5 楼kuli(苦力)回复于 2002-01-29 09:31:10 得分 50
是否是在部署的时候出现问题,重复了ListItem类?Top
6 楼linger521(红色箭头)回复于 2002-01-29 09:43:35 得分 0
问题在于:
vector vector2=a();
ListItem test=new ListItem(); //要去掉这句。
vector2.get()没有问题。
test=(ListItem)(vector2.get());转换类型出错误 //改为
/**********************************/
ListItem test =(ListItem)(vector2.get(i));
Top
7 楼weilinwu(特立独行)回复于 2002-01-29 10:11:32 得分 0
ListItem test=new ListItem(); //要去掉这句。
test=(ListItem)(vector2.get(i));转换类型出错误 //改为
/**********************************/
ListItem test =(ListItem)(vector2.get(i));
那位大哥能讲讲为什么要这样改吗?
Top
8 楼oldcat0076(jeff)回复于 2002-01-29 10:52:36 得分 0
你把1.java和2.java也全部贴出来Top
9 楼sharetop(九尾灵狐)回复于 2002-01-29 12:51:26 得分 50
的确,我试过你的代码,没有问题。
ListItem item = new ListItem();
item=(ListItem)vector2.get(0);
可以,你注意一下,是否下标超界?是否在你的1.java和2.java中有什么问题,事实上不管是 ListItem item=(ListItem)vector2.get(0);
或是分两行写,应该没问题的。
Top
10 楼kuli(苦力)回复于 2002-01-29 14:32:51 得分 0
谢谢大家,解决了,是打包是重复打包了ListItem类
Top
11 楼zhaoxichao(小西)回复于 2002-01-29 14:37:08 得分 0
给分了!!!
Top
12 楼zhaoxichao(小西)回复于 2002-01-29 14:38:16 得分 0
给分Top
13 楼zhaoxichao(小西)回复于 2002-01-29 14:42:51 得分 0
??????????????Top
14 楼sharetop(九尾灵狐)回复于 2002-01-30 12:46:10 得分 0
点后面的管理给分,要给分就要全部给出不能留的。
Top
15 楼ChrisZhang(西楼明月)回复于 2002-01-30 19:55:07 得分 0
Vector类在Java编程中的应用 作者:
Vector 类 提 供 了 实 现 可 增 长 数 组 的 功 能, 随 着 更 多 元 素 加 入 其 中, 数 组 变 的 更 大。 在 删 除 一 些 元 素 之 后, 数 组 变 小。
Vector 有 三 个 构 造 函 数,
public Vector(int initialCapacity,int capacityIncrement)
public Vector(int initialCapacity)
public Vector()
---- Vector 运 行 时 创 建 一 个 初 始 的 存 储 容 量initialCapacity, 存 储 容 量 是 以capacityIncrement 变 量 定 义 的 增 量 增 长。 初 始 的 存 储 容 量 和capacityIncrement 可 以 在Vector 的 构 造 函 数 中 定 义。 第 二 个 构 造 函 数 只 创 建 初 始 存 储 容 量。 第 三 个 构 造 函 数 既 不 指 定 初 始 的 存 储 容 量 也 不 指 定capacityIncrement。
---- Vector 类 提 供 的 访 问 方 法 支 持 类 似 数 组 运 算 和 与Vector 大 小 相 关 的 运 算。 类 似 数 组 的 运 算 允 许 向 量 中 增 加, 删 除 和 插 入 元 素。 它 们 也 允 许 测 试 矢 量 的 内 容 和 检 索 指 定 的 元 素, 与 大 小 相 关 的 运 算 允 许 判 定 字 节 大 小 和 矢 量 中 元 素 不 数 目。
---- 现 针 对 经 常 用 到 的 对 向 量 增, 删, 插 功 能 举 例 描 述:
addElement(Object obj)
---- 把 组 件 加 到 向 量 尾 部, 同 时 大 小 加1, 向 量 容 量 比 以 前 大1
insertElementAt(Object obj, int index)
---- 把 组 件 加 到 所 定 索 引 处, 此 后 的 内 容 向 后 移 动1 个 单 位
setElementAt(Object obj, int index)
---- 把 组 件 加 到 所 定 索 引 处, 此 处 的 内 容 被 代 替。
---- removeElement(Object obj) 把 向 量 中 含 有 本 组 件 内 容 移 走。
---- removeAllElements() 把 向 量 中 所 有 组 件 移 走, 向 量 大 小 为0。
---- 例 如:
import java.lang.System;
import java.util.Vector;
import java.util.Emumeration;
public class Avector{
public static void main(String args[])
{
0. Vector v=new Vector();
1. v.addElement("one");
2. addElement("two");
3. v.addElement("three");
4. v.insertElementAt("zero",0);
5. v.insertElementAt("oop",3);
6. v.setElementAt("three",3);
7. v.setElementAt("four",4);
8. v.removeAllElements();
}
}
Vector中的变化情况:
1. one 2. one 3. one 4. zero 5.zero 6. zero 7. zero
8.
two two one one one one
three two two two two
three oop three three
three three four
---- 另 外,Vector 在 参 数 传 递 中 发 挥 着 举 足 轻 重 的 作 用。
---- 在Applet 中 有 一 块 画 布(Canvas) 和 一 个(Panel), 而Panel 中 放 着 用 户 要 输 入 的 信 息, 根 据 这 些 信 息 把 参 数 传 递 到canvas 中, 这 时 在Java 中 用 一 个 接 口(Interface), 而 在 接 口 中 需 用 一 个Vector 去 传 递 这 些 参 数。 另 外, 在 一 个 类 向 另 一 个 类 参 数 传 递 就 可 以 用 这 种 方 法。
---- 例 如:
import java.util.Vector
interface codeselect{
Vector codeselect=new Vector();
}
显示数学信息
Vector(0)存入学生编号
Vector(1)存入学科
---- 在Panel 中 当 用 户 在 TextField 和Choice 中 选 择 自 己 所 要 求 的 内 容, 程 序 中
---- 通 过 事 件 响 应 把 值 传 到 向 量Vector 中。
---- 假 若 在Panel 类 中:
public void codepanel extends Panel{
public void init()
{
**.
TextField s=new TextField();
Choice c=new Choice();
c. addItem("语文");
c.addItem("数学");
c.addItem("政治");
add(s);
add (c);
**
}
public boolean handleEvent(Event event){
if(event.id==Event.ACTION_EVENT){
if(event.target.instanceof Textfield)
{
coderesult.setElementAt(s.getText(),0);
}
else if(event.target intanceof Choice)
{
coderesult.setElementAt(new Integer(c.getSelectedIndex()),1);
}
}
}
}
---- 这 时, 向 量 中 已 经 存 入 学 生 编 号 和 学 科 索 引 号(0 为 语 文,1 为 数 学,2 为 政 治)。
---- 而 在Canvas 中 得 到 此 值,
public class codecanvas extends Canvas{
public void code{
}
public void paint{
String str;
int t;
str=(String)coderesult.elementAt(0);
t=(new Integer(codeselect.elementAt(1).toString())).intValue();
if(t==0)
{
显示语文信息
}
else if(t==1)
{
显示数学信息
}
else if(t==2)
{
显示政治信息
}
}
}
文章来自:http://www.chinajavaworld.com/Top
16 楼zhaoxichao(小西)回复于 2002-01-31 10:01:09 得分 0
o Top
17 楼gdsean(摇滚java)回复于 2002-01-31 10:13:18 得分 0
小西你那问题还没解决?
本来Vector里面放什么,你取出来在影射回去是
绝对没有问题的,问题出现在哪里你还得自己细心找找Top
18 楼gdsean(摇滚java)回复于 2002-01-31 11:09:07 得分 0
苦力跟小西什么关系Top




