语言:Java
编译器版本:1.6
在下面的代码中,我尝试执行以下操作:
List<String>StringList<String>到原始ListList<Integer>List给List<Integer>Integerget()@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) 我要求匹配两个日期,如果他们的月/年相同,我应该返回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)