java的访问修饰符互相淘汰?

时间:2018-10-29 09:10:52

标签: android android-adapter access-modifiers android-viewholder

当前,我正在使用使用SDK 19的Android Studio 3开发一个android项目。我的个人目标是生成几乎没有警告的代码,以提高我的代码质量。

在以RecyclerViewAdapter作为内部类为我的RecyclerView设置ViewHolder时,我遇到了Android Studio的这种奇怪行为,它标志着ViewHolder的访问成为私人的但是,当我这样做时,我的RecyclerView.Adapter类的声明中已经出现错误。知道我特别在做什么错吗?

这是我的ErrorCompactAdapter的骨架结构:

public class ErrorCompactAdapter extends RecyclerView.Adapter<ErrorCompactAdapter.ErrorCompactViewHolder> {

    //fields and attributes
    //cotr
    //onCreateViewHolder
    //onBindViewHolder
    //getItemCount

    protected class ErrorCompactViewHolder extends RecyclerView.ViewHolder {

        //outlets
        //cotr

    }
}

警告明确指出,ErrorCompactViewHolder的访问可以是私有的。如果我更改此设置,则会收到一条错误消息,提示ErrorCompactAdapter.ErrorCompactViewHolder has a private access in ErrorCompactAdapter。这有点令人困惑,您能想象吗?知道吗,如果我在某个地方挖了自己的陷阱,该怎么办?谢谢。

2 个答案:

答案 0 :(得分:1)

Android Studio建议您将ErrorCompactViewHolder的访问修饰符更改为 package-private ,而不要更改为 private
Package-private是Java中的默认访问修饰符,这意味着该类将在其包的范围内可用。

要为该类提供默认的(程序包专用)访问修饰符,则需要完全删除访问修饰符。

答案 1 :(得分:0)

应该是私有静态字段吗?