Java类使用未检查或不安全的操作

Java类使用未检查或不安全的操作,java,android,generics,javac,Java,Android,Generics,Javac,我有一个名为LB_Adapter.java的类来帮助在ListView中显示我的数据库。我的程序的所有功能都很好,但每次编译时都会收到一个警告错误,上面写着 Note: Project/LB_Adapter.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 通过谷歌搜索,我知道错误来自我的ArrayList,但我尝试了实现ArrayList(),但它不起作用。

我有一个名为LB_Adapter.java的类来帮助在ListView中显示我的数据库。我的程序的所有功能都很好,但每次编译时都会收到一个警告错误,上面写着

Note: Project/LB_Adapter.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
通过谷歌搜索,我知道错误来自我的ArrayList,但我尝试了实现ArrayList(),但它不起作用。有没有一种方法可以消除这个错误,或者因为它不影响任何东西,所以它是否重要

相关代码:

public class LB_Adapter extends ArrayAdapter<Object> {
List<Object> list = new ArrayList<>();

public LB_Adapter(Context context, int resource){
    super(context, resource);
}

public void add(LB object){
    list.add(object);
    super.add(object);
}

@Override
public int getCount(){
    return list.size();
}

@Override
public Object getItem(int position){
    return list.get(position);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    LBHolder lbholder;

    if(row==null){
        LayoutInflater layoutinflater = (LayoutInflater) this.getContext().getSystemService(getContext().LAYOUT_INFLATER_SERVICE);
        row = layoutinflater.inflate(R.layout.display_leaderboard_row, parent, false);
        lbholder = new LBHolder();
        lbholder.lb_rank = (TextView) row.findViewById(R.id.lb_rank);
        lbholder.lb_score = (TextView) row.findViewById(R.id.lb_score);
        lbholder.lb_time = (TextView) row.findViewById(R.id.lb_time);
        row.setTag(lbholder);
    }
    else {
        lbholder = (LBHolder) row.getTag();
    }
    LB leaderboard = (LB) getItem(position);
    lbholder.lb_rank.setText(leaderboard.getRank().toString());
    lbholder.lb_score.setText(Integer.toString(leaderboard.getScore()));
    lbholder.lb_time.setText(leaderboard.getTime().toString());

    return row;
}

static class LBHolder{
    TextView lb_rank, lb_score, lb_time;
}
}
公共类LB_适配器扩展了ArrayAdapter{
列表=新的ArrayList();
公共LB_适配器(上下文,int资源){
超级(上下文、资源);
}
公共无效添加(LB对象){
列表。添加(对象);
super.add(object);
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
LBHolder LBHolder;
if(行==null){
LayoutInflater LayoutInflater=(LayoutInflater)this.getContext().getSystemService(getContext().LAYOUT\u INFLATER\u SERVICE);
行=布局更平坦。充气(R.layout.display\u leadboard\u row,parent,false);
lbholder=新的lbholder();
lbholder.lb_rank=(TextView)row.findViewById(R.id.lb_rank);
lbholder.lb_分数=(TextView)row.findViewById(R.id.lb_分数);
lbholder.lb_time=(TextView)row.findViewById(R.id.lb_time);
row.setTag(lbholder);
}
否则{
lbholder=(lbholder)row.getTag();
}
LB排行榜=(LB)getItem(位置);
lbholder.lb_rank.setText(leadboard.getRank().toString());
lbholder.lb_score.setText(Integer.toString(leadboard.getScore());
lbholder.lb_time.setText(leadboard.getTime().toString());
返回行;
}
静态类LBHolder{
TextView磅级,磅级分数,磅级时间;
}
}

自从Java 5中引入泛型以来,不鼓励使用原始类型。您应该只为正在使用的
ArrayAdapter
ArrayList
键入参数:

public class LB_Adapter extends ArrayAdapter<LB> {
    // Here --------------------------------^

    // And here:
    List<LB> list = new ArrayList<>();

    public LB_Adapter(Context context, int resource){
        super(context, resource);
    }

    public void add(LB object){
        list.add(object);
        super.add(object);
    }
}
公共类LB_适配器扩展了ArrayAdapter{
//这里--------------------------------^
//在这里:
列表=新的ArrayList();
公共LB_适配器(上下文,int资源){
超级(上下文、资源);
}
公共无效添加(LB对象){
列表。添加(对象);
super.add(object);
}
}

自从Java 5中引入泛型以来,不鼓励使用原始类型。您应该只为正在使用的
ArrayAdapter
ArrayList
键入参数:

public class LB_Adapter extends ArrayAdapter<LB> {
    // Here --------------------------------^

    // And here:
    List<LB> list = new ArrayList<>();

    public LB_Adapter(Context context, int resource){
        super(context, resource);
    }

    public void add(LB object){
        list.add(object);
        super.add(object);
    }
}
公共类LB_适配器扩展了ArrayAdapter{
//这里--------------------------------^
//在这里:
列表=新的ArrayList();
公共LB_适配器(上下文,int资源){
超级(上下文、资源);
}
公共无效添加(LB对象){
列表。添加(对象);
super.add(object);
}
}

是否尝试使用
-Xlint
重新编译以获取更多详细信息?为什么要使用原始类型?为此,我只需在终端中键入javacproject-Xlint即可?另外,我也不确定原始类型,我使用了一个教程来获得这段代码。我之所以对编译感到困惑,是因为这是一个带有Android Studio的程序,所以它不仅仅是一个简单的java程序,它涉及gradle和Stuff。我强烈怀疑有一种方法可以在构建配置中使用Xlint。我建议您对此进行研究。您是否尝试使用
-Xlint
重新编译以获取更多详细信息?为什么要使用原始类型?为此,我只需在终端中键入javacproject-Xlint即可?另外,我也不确定原始类型,我使用了一个教程来获得这段代码。我之所以对编译感到困惑,是因为这是一个带有Android Studio的程序,所以它不仅仅是一个简单的java程序,它涉及gradle和Stuff。我强烈怀疑有一种方法可以在构建配置中使用Xlint。我建议你研究一下。我贴了更多的我的课。当我在我的公共对象getItem(int-position)方法上放置错误时(请参见编辑)。我将其更改为并构建了apk,不再有错误。你认为这是解决错误的推荐方法吗?@Milap no-在你的用例中应该是
LB
。好的。这样编译也不会出错。谢谢你的帮助!我张贴了更多的我的班级。当我在我的公共对象getItem(int-position)方法上放置错误时(请参见编辑)。我将其更改为并构建了apk,不再有错误。你认为这是解决错误的推荐方法吗?@Milap no-在你的用例中应该是
LB
。好的。这样编译也不会出错。谢谢你的帮助!