private class ViewHolder extends RecyclerView.ViewHolder {
private TextView tv_name;
public ViewHolder(View itemView) {
super(itemView);
tv_name = itemView.findViewById(R.id.tv_name);
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ViewHolder) {
Bean bean = mlist.get(position);
((ViewHolder) holder).tv_name.setText(bean.getTdi_name());
}
}
为什么我在ViewHolder类private声明的控件 能直接被.调用,有点无法理解,还望指教。
因为你这个类是内部类,内部类的private变量是可以被外部类直接访问。参考下:https://www.zhihu.com/question/54730071
在类内部可以访问私有变量,即使是通过类实例,也可以访问。
private修饰全局变量的本来就是只能在当前类中使用啊
对于一个类的私有变量,在其作用域范围内可被使用;其他类不可直接访问该类的私有变量。
public class Test1{
private void f(){
System.out.println ("private f()");
}
public static void main (String[] args) {
Test1 po=new Test1();
po.f();
}
}
疑问:为何在类Test1中,创建他本身的对象的时候,其对象的引用可以直接调用类Test1中的private方法?
public class Test2{
public static void main (String[] args) {
PrivateTest po=new PrivateTest();
po.f();
}
}
class PrivateTest{
private void f(){
System.out.println ("private f()");
}
}
上述代码中类PrivateTest中的方法为private,故po.f()无法调用。
当前类下,private可以访问
private是对类内可见;而那个点的引用就在同一个类里,自然可以访问了
当前类里面声明的private可以被访问,离开了这个类就不可以了
private表示私有类,public表示公有。在同一个类下,私有类本来就可以调用。
建议你去了解一下 访问修饰符(public,private,protected,internal,sealed,abstract) 以及 内部内的几种实现 ,如果你了解这些后还是没知道这是为什么,那就去开视频吧~