小编pul*_*thi的帖子

迭代参数化List(在原始List类型赋值之后)

语言:Java
编译器版本:1.6

在下面的代码中,我尝试执行以下操作:

  1. 创建一个 List<String>
  2. 添加一个 String
  3. 分配List<String>到原始List
  4. 创建一个 List<Integer>
  5. 将原始分配ListList<Integer>
  6. 添加一个 Integer
  7. 使用get()@index 1和2 检索值并打印它们.

所有语句都在编译(带警告)并运行正常.

但是,如果我尝试循环List<Integer>使用for循环,我会得到一个ClassCastException.我只是想知道为什么它允许我使用list.get()方法但不允许我迭代它?

输出:( 如果我使用未注释的for循环运行)abcd 200

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot  be cast to java.lang.Integer
        at genericsamples.CheckRawTypeAdd.main(CheckRawTypeAdd.java:26)
Run Code Online (Sandbox Code Playgroud)

这是我的代码

import java.util.*;
import java.io.*;
class CheckRawTypeAdd
{
    public static void main(String[] sr)
    {   
        List<String> list_str = new ArrayList<String>();
        list_str.add("abcd");
        List<Integer> list_int = new ArrayList<Integer>();  
        List list_raw; 
        list_raw=list_str;
        list_int=list_raw;
        list_int.add(200); …
Run Code Online (Sandbox Code Playgroud)

java generics foreach classcastexception

8
推荐指数
1
解决办法
1349
查看次数

java - 比较月份和年份的两个日期值

我要求匹配两个日期,如果他们的月/年相同,我应该返回true,否则为false.根据我的搜索,我找到了以下解决方案.还有其他更好的方法来进行这种比较吗?

Calendar cal1 = Calendar.getInstance();
    Calendar cal2 = Calendar.getInstance();
    cal1.setTime(date1);
    cal2.setTime(date2);
    boolean sameDay = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
                      cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);
Run Code Online (Sandbox Code Playgroud)

java date date-comparison

2
推荐指数
1
解决办法
6490
查看次数