下一个代码
def f(chars: List[Char]): List[List[Char]] = chars match {
case Nil => List(Nil)
case x :: xs => for {
v <- f(xs)
} yield List(x) :: v
}
Run Code Online (Sandbox Code Playgroud)
给出错误消息
- type mismatch; found : List[List[Any]] required: List[List[Char]]
Run Code Online (Sandbox Code Playgroud)
请帮助我理解为什么'for'选择最一般的Any而不是Char?我应该阅读语言规范中的哪个主题?谢谢.
下一个代码
public class FilterState<T>{
Map<String, Object> getProperties(){return null;} // null for shorteness
}
....
public test(FilterState filterState){
Map<String, Object> map = filterState.getProperties();
}
Run Code Online (Sandbox Code Playgroud)
产生警告
Unchecked assignment: 'java.util.Map' to 'java.util.Map<java.lang.String, java.lang.Object>
Run Code Online (Sandbox Code Playgroud)
但是,如果我用.替换过程定义
public <T> test(IFilterState<T> filterState)
Run Code Online (Sandbox Code Playgroud)
警告消失了.我不知道类通用与地图分配有什么关系.通过通用文档快速搜索没有帮助.谁知道在哪里看,有人吗?:)