java访问修饰符互相淘汰?
java access modifier knocking out each other?
目前我正在使用 Android Studio 3 和 SDK 19 开发一个 android 项目。我的个人目标是生成几乎没有警告的代码以提高我的代码质量。
在为我的 RecyclerView
设置一个 RecyclerViewAdapter
并使用 ViewHolder
作为内部 class 时,我遇到了 Android Studio 的这种奇怪行为,它将我的 ViewHolder
的访问权限标记为私有。但是,当我这样做时,我的 RecyclerView.Adapter
class 声明中已经出现错误。知道我做错了什么吗?
这是我的骨架结构 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
。这有点令人困惑,你能想象吗?知道吗,如果我在某个地方给自己挖了一个陷阱洞?感谢转发。
应该是私有静态字段吗?
Android Studio 建议您将 ErrorCompactViewHolder
的访问修饰符更改为 package-private,而不是 private,差别很大。
包私有是 Java 中的默认访问修饰符,这意味着 class 将在其包的范围内可用。
要提供 class 默认(包私有)访问修饰符,您需要完全删除访问修饰符。
目前我正在使用 Android Studio 3 和 SDK 19 开发一个 android 项目。我的个人目标是生成几乎没有警告的代码以提高我的代码质量。
在为我的 RecyclerView
设置一个 RecyclerViewAdapter
并使用 ViewHolder
作为内部 class 时,我遇到了 Android Studio 的这种奇怪行为,它将我的 ViewHolder
的访问权限标记为私有。但是,当我这样做时,我的 RecyclerView.Adapter
class 声明中已经出现错误。知道我做错了什么吗?
这是我的骨架结构 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
。这有点令人困惑,你能想象吗?知道吗,如果我在某个地方给自己挖了一个陷阱洞?感谢转发。
应该是私有静态字段吗?
Android Studio 建议您将 ErrorCompactViewHolder
的访问修饰符更改为 package-private,而不是 private,差别很大。
包私有是 Java 中的默认访问修饰符,这意味着 class 将在其包的范围内可用。
要提供 class 默认(包私有)访问修饰符,您需要完全删除访问修饰符。