用java强制转换对象数组
我声明了一个对象数组。是否可以使用自定义节点类而不是通用对象数组?这是我的密码:用java强制转换对象数组,java,arrays,object,Java,Arrays,Object,我声明了一个对象数组。是否可以使用自定义节点类而不是通用对象数组?这是我的密码: Object[] pos = new Object[28]; pos[1] = new HashSet<String>(); Object[]pos=新对象[28]; pos[1]=新的HashSet(); 我的节点类只包含字符串值。我试着直接做,但不起作用 Node[] pos = new Node[28]; pos[1] = new HashSet<String>(); Node[
Object[] pos = new Object[28];
pos[1] = new HashSet<String>();
Object[]pos=新对象[28];
pos[1]=新的HashSet();
我的节点类只包含字符串值。我试着直接做,但不起作用
Node[] pos = new Node[28];
pos[1] = new HashSet<String>();
Node[]pos=新节点[28];
pos[1]=新的HashSet();
否,您无法执行您所做的操作:当您声明类型为节点
的数组时,只有类型为节点
的对象或通过继承从其派生的类型才能成为数组元素
这适用于Object[]
数组的原因是Object
是每个Java对象的基类HashSet
对象可以转换为类型java.lang.Object
,但不能转换为不相关的类型节点Object[]pos=新对象[28];
Object[] pos = new Object[28];
pos[1] = new HashSet<String>();
pos[1]=新的HashSet();
这是因为HashSet是一个对象
Node[] pos = new Node[28];
pos[1] = new HashSet<String>();
Node[]pos=新节点[28];
pos[1]=新的HashSet();
此不起作用,因为节点不是哈希集。您不能将哈希集放在需要节点的数组中。请尝试以下方法:
String[] stringArray = (String[])valid.toArray(new String[valid.size()]);
好吧,当你这么做的时候
Node[] pos = new Node[28];
这意味着您要告诉编译器您正在创建长度为28的节点对象数组。但是当你在下面做的时候
pos[1] = new HashSet<String>();
pos[1]=新的HashSet();
您正在尝试存储HashSet对象而不是节点对象。这就是问题所在
但是对于Object array,它将起作用,因为Object是java中其他所有类的超类为什么不使用map而不是node array呢?我不明白你想做什么
pos
应该是一个节点数组。但您正在尝试为其元素1分配哈希集。如果你试图分配给一个简单的类节点变量,你会得到本质上相同的错误,以及由此产生的所有影响。有解决方法吗?没有。为什么要解决它?@user2326847-了解类继承。@user2326847您需要选择一个类型作为哈希集
(即对象
,集合
,或抽象集
)或其一个接口的基础(即Serializable
,Cloneable
,Iterable
,Collection
,或Set
)。有关基本类型的列表,请参见(参见顶部的层次结构)