JAVA中,声明一个List集合,往集合里添加A类型元素与B类型元素,再创建这个集合的Iterat 10
JAVA中,声明一个List集合,往集合里添加A类型元素与B类型元素,再创建这个集合的Iterator迭代器,并声明迭代器返回元素为A类型。那么在调用这个迭代器的next...
JAVA中,声明一个List集合,往集合里添加A类型元素与B类型元素,再创建这个集合的Iterator迭代器,并声明迭代器返回元素为A类型。那么在调用这个迭代器的next()方法时,遇到B类型元素会怎么样?
展开
1个回答
展开全部
首先直接回答你的问题:运行期,遇到B元素会报错。即类型转换错误。泛型的出现就是为了预防这类错误。因为默认你存的object对象,可以强制类型转换,但在运行期,电脑会发现强制类型转换错误。故报错。
最好指定泛型。原因如下:
第一、不确定泛型,首先会有黄色的叹号,我一般不会让代码出现。
第二、什么样的元素都可以提取出相同的继承类型。常用的有serialize,object等。
最后,把你发的图的问题也解决了:
String的hashcode方法和object不同,api中如此解释:
public int hashCode()
返回此字符串的哈希码。String 对象的哈希码根据以下公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
使用 int 算法,这里 s[i] 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。(空字符串的哈希值为 0。)
所以字符串的hashcode只和字符串的内容相关,和其他的无关。故上述的hashcode都相等。
最好指定泛型。原因如下:
第一、不确定泛型,首先会有黄色的叹号,我一般不会让代码出现。
第二、什么样的元素都可以提取出相同的继承类型。常用的有serialize,object等。
最后,把你发的图的问题也解决了:
String的hashcode方法和object不同,api中如此解释:
public int hashCode()
返回此字符串的哈希码。String 对象的哈希码根据以下公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
使用 int 算法,这里 s[i] 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。(空字符串的哈希值为 0。)
所以字符串的hashcode只和字符串的内容相关,和其他的无关。故上述的hashcode都相等。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询