【发布时间】:2020-11-14 16:45:06
【问题描述】:
我正在尝试将私有类插入外部类声明的括号(泛型)并得到下一个错误:“com.example.gridrecyclerview.RecyclerViewAdapter.VieHolder 在 com.example.gridrecyclerview.RecyclerViewAdapter 中具有私有访问权限”
将内部类更改为 public 时一切正常。有人可以解释我的问题。 附代码:
package com.example.gridrecyclerview;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import java.util.Random;
public class RecyclerViewAdapter extends RecyclerView.Adapter <RecyclerViewAdapter.ViewHolder> {
Context context;
List<ModelItem> modelItemList;
public RecyclerViewAdapter(Context context, List<ModelItem> modelItemList)
{
this.context = context;
this.modelItemList = modelItemList;
}
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
View view = LayoutInflater.from(context).inflate(R.layout.rc_item,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position)
{
Log.e("onBindViewHolder ","onBindViewHolder");
ModelItem modelItem = modelItemList.get(position);
holder.firstNameTextView.setText(modelItem.getFirstName());
holder.secondNameText.setText(modelItem.getLastName());
}
@Override
public int getItemCount()
{
return modelItemList.size();
}
private class ViewHolder extends RecyclerView.ViewHolder
{
TextView firstNameTextView;
TextView secondNameText;
public ViewHolder(@NonNull View itemView)
{
super(itemView);
firstNameTextView = itemView.findViewById(R.id.first_name);
secondNameText = itemView.findViewById(R.id.second_name);
}
}
}
【问题讨论】:
-
抛开泛型不谈,您认为您应该能够编写一个返回(或具有参数)非私有类型的公共方法吗?如果有人编写了
public static PrivateClass getPrivateClassInstance()的方法,您希望编译器对调用该方法的任何代码做什么?在您的情况下应用相同的逻辑。
标签: java generics private inner-classes