[java] how to cast after clone()?
登录 | 论坛导航 -> 华新鲜事 -> 技术の宅 | 本帖共有 16 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:蚂蚁 (等级:3 - 略知一二,发帖:108) 发表:2006-04-06 02:18:50  楼主  关注此帖
[java] how to cast after clone()?

Vector<A> a= new Vector<A>();
Vector<A> b= a.clone(); //1.
Vector<A> b=(Vector) a.clone();//2.
Vector<A> b=(Vector<A>) a. clone(); //3

i have tried all the three ways of casting, but all of them will produce either an error or a warning. Can anyone suggest how to do casting in this case? thanks a lot in advance!

少上网
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:逃课专家 (等级:11 - 出神入化,发帖:3794) 发表:2006-04-06 09:23:01  2楼
what is Vector<A> for?
Vector[]?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:吴永铮 (等级:8 - 融会贯通,发帖:2078) 发表:2006-04-06 12:50:29  3楼
我试了,第三个可以啊
[atp@gateway ~]$ cat aaa.java
import java.util.Vector;

public class aaa
{
  public static void main (String [] s)
  {
    Vector<String> a = new Vector<String>();
    a.add("hi");
    Vector<String> b = (Vector<String>)a.clone();
    System.out.println(b);
  }
}
[atp@gateway ~]$ javac aaa.java
Note: aaa.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
[atp@gateway ~]$ java aaa
[hi]
[atp@gateway ~]$ 
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:绿竹幽径 (等级:2 - 初出茅庐,发帖:27) 发表:2006-04-06 19:07:38  4楼
try Vector<String> b = new Vector<String>(a);
try this

Vector<String> b = new Vector<String>(a);
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:吴永铮 (等级:8 - 融会贯通,发帖:2078) 发表:2006-04-06 23:59:53  5楼
try Vector b = new Vector(a);try this Vector b = new Vector(a); (more...)
有一点点不一样
Vector<String> b = new Vector<String>(a); // this is shallow clone
Vector<String> b = (Vector<String>)a.clone(); // this is deep clone
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:蚂蚁 (等级:3 - 略知一二,发帖:108) 发表:2006-04-07 04:20:04  6楼
我试了,第三个可以啊[atp@gateway ~]$ cat aaa.java import java.util.Vector; public class aaa {   public static void main (String [] s)   {     Vector a = new Vector();     a.add("hi");     Vector b = (Vector)a.clone();     System.out.println(b);   } } [atp@gateway ~]$ javac aaa.java Note: aaa.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. [atp@gateway ~]$ java aaa [hi] [atp@gateway ~]$ 
多谢!第三个是可以,不过
还是有
Note: aaa.java uses unchecked or unsafe operations
难道就没有办法可以避免吗?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:蚂蚁 (等级:3 - 略知一二,发帖:108) 发表:2006-04-07 04:21:38  7楼
what is Vector for?Vector[]? (more...)
就是说这个vector里面放的都是A这个class的object
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:icky (等级:15 - 最接近神,发帖:7923) 发表:2006-04-07 09:04:19  8楼
有一点点不一样Vector b = new Vector(a); // this is shallow clone Vector b = (Vector)a.clone(); // this is deep clone (more...)
能解释一下deep clone and shallow clone 么?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:抽烟看球 (等级:2 - 初出茅庐,发帖:119) 发表:2006-04-07 12:21:21  9楼
能解释一下deep clone and shallow clone 么?
Shallow clone
Shallow clone: if original object's value is changed, and the copy of that object also changes.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:抽烟看球 (等级:2 - 初出茅庐,发帖:119) 发表:2006-04-07 14:09:15  10楼
多谢!第三个是可以,不过还是有 Note: aaa.java uses unchecked or unsafe operations 难道就没有办法可以避免吗?
Leave it
this warning message just shows that compiler cannot assure correctness of this casting operation as clone() method returns type of object.

It is really programmer's responsibility to avoid any casting failure.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:icky (等级:15 - 最接近神,发帖:7923) 发表:2006-04-07 18:56:50  11楼
Shallow cloneShallow clone: if original object's value is changed, and the copy of that object also changes.
is it similar to copy pointer and copy objects in C?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:蚂蚁 (等级:3 - 略知一二,发帖:108) 发表:2006-04-08 03:10:46  12楼
Leave itthis warning message just shows that compiler cannot assure correctness of this casting operation as clone() method returns type of object. It is really programmer's responsibility to avoid any casting failure.
总是觉得compile之后还有一行字,看起来实在是很不爽!
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:抽烟看球 (等级:2 - 初出茅庐,发帖:119) 发表:2006-04-09 15:52:11  13楼
is it similar to copy pointer and copy objects in C?
I didnt make my statement clear enuf
in this case, a shallow clone will make an extra copy of Vector object. ( only container object is copied)

however, a deep clone will create memory for Vector object and all String objects inside this Vector. ( container and contained objects are all duplicated)

欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:门中木 (等级:3 - 略知一二,发帖:1418) 发表:2006-04-10 22:00:50  14楼
I didnt make my statement clear enufin this case, a shallow clone will make an extra copy of Vector object. ( only container object is copied) however, a deep clone will create memory for Vector object and all String objects inside this Vector. ( container and contained objects are all duplicated)
so shallow is just assign a reference , am I right
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:抽烟看球 (等级:2 - 初出茅庐,发帖:119) 发表:2006-04-10 23:27:12  15楼
so shallow is just assign a reference , am I right
copy object for container, copy referrence for contained object
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:门中木 (等级:3 - 略知一二,发帖:1418) 发表:2006-04-13 00:04:36  16楼
1.5的东东比1.4变了好多,搞的连java也不会写了^_^
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
论坛导航 -> 华新鲜事 -> 技术の宅 | 返回上一页 | 本主题共有 16 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码