为什么会这样:
j = 0
For i = 1 To 30
With Sheets("Arbeiter-Tage")
If Application.WorksheetFunction.CountA(.Columns(1)) <> 0 Then
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row + 1
Else
lastRow = 1
End If
Sheets("Vorlage").Activate
If ActiveSheet.Range("V" & 25 + j).Value = 0 Then
ActiveSheet.Range("B" & 25 + j & ":" & "Q" & 25 + j).Copy
.Range("A" & lastRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End With
j = j + 2
在Java 6中工作?我的意思是,通过将TreeSet作为TreeMap的键而不使用适当的Comparator的规范应该导致ClassCastException,但是在Java 6下运行时它没有。这是一个错误还是Java 7中的一些规范更改使其正常工作(即抛出ClassCastException)?
答案 0 :(得分:0)
Java 7中也允许这样做,而不仅仅是Java 6。
如果密钥不是实现put
的类型,ClassCastException
方法将抛出Comparable
。该类可能被设计为在构造函数中抛出异常,但它并不是因为
(a)泛型参数类型受到类型擦除,因此实际TreeMap
将所有内容视为普通对象,并且不能在构造函数中应用任何检查;
(b)这种方式允许您使用任何对象作为键,只要它是实现Comparable
的子类,即使您最初没有声明TreeMap
采取类似的密钥类型。