每次 InputStream inputOne = getClass().getResourceAsStream(
"/Lab Exercise 3 Input/InputFile1.txt");
InputStream inputTwo = getClass().getResourceAsStream(
"/Lab Exercise 3 Input/InputFile2.txt");
// create a scanner objects to read the files
Scanner sc = new Scanner(inputOne);
Scanner sc2 = new Scanner(inputTwo);
和?.
内都必须使用!!.
和onBindViewHolder
吗?有什么方法可以避免这种情况吗?
onCreateViewHolder
和holder.textview.text
显示此错误。
代码:
parent.context
答案 0 :(得分:3)
当你覆盖用Java声明的方法时,它的参数将具有平台类型,这意味着没有关于它们的可空性信息(除非它们是explicitly annotated)。由您来决定是否将这些参数标记为可空。请参阅有关platform types的官方文档。
在您的情况下,您可以安全地从这两个参数中删除?
,因为它们永远不会传递null
值。这使您免于必须进行强制性空检查。
以下是移除可空类型的情况:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.textview.text = items[position]
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(TextView(parent.context))
}
答案 1 :(得分:2)
在您的示例中使用可空类型时,必须对代码应用安全措施。您每次都使用?.
,或者检查参数是否为!=null
。在这样的if
之后,编译器知道对此参数的调用是安全的,并且null
是不可能的。
在您的特殊情况下,没有必要拥有可空类型。只需从参数中删除问号,一切都很好。
顺便说一下:不要使用!!
,这肯定是一个更好的解决方案
答案 2 :(得分:1)
除非您在计数>中onCreateViewHolder
中创建了空视图,否则视图永远不会为空。 0,所以可以安全地删除?
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.textview.text = items[position]
}