小编Obs*_*ver的帖子

Scala for-comprehension类型推断

下一个代码

  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?我应该阅读语言规范中的哪个主题?谢谢.

scala for-comprehension

5
推荐指数
2
解决办法
298
查看次数

普通类的方法调用

下一个代码

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)

警告消失了.我不知道类通用与地图分配有什么关系.通过通用文档快速搜索没有帮助.谁知道在哪里看,有人吗?:)

java generics methods

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

标签 统计

for-comprehension ×1

generics ×1

java ×1

methods ×1

scala ×1