错误:匿名类不是抽象的,不会覆盖抽象方法
Posted
技术标签:
【中文标题】错误:匿名类不是抽象的,不会覆盖抽象方法【英文标题】:Error: anonymous class is not abstract and does not override abstract method 【发布时间】:2016-04-05 07:41:42 【问题描述】:拜托,每当我尝试构建我的 android 项目时,下面的方法都会出错。
方法:
query.findInBackground(new FindCallback()
@Override
public void done(List<ParseObject> objects, ParseException e)
mProgressBar.setVisibility(View.INVISIBLE);
if (e == null)
objects = removeCurrentUser(objects);
mUsers = objects.toArray(new ParseObject[0]);
// Get user relations
ParseRelation userRelations = ParseUser.getCurrentUser().getRelation("UserRelation");
userRelations.getQuery().findInBackground(new FindCallback()
@Override
public void done(List<ParseObject> results, ParseException e)
if (e == null)
UsersAdapter adapter = new UsersAdapter(SelectUsersActivity.this, mUsers, new ArrayList<ParseObject>(results));
setListAdapter(adapter);
else
Log.e(TAG, "Exception caught!", e);
);
else
// Something went wrong.
Toast.makeText(SelectUsersActivity.this, "Sorry, there was an error getting users!", Toast.LENGTH_LONG).show();
//
);
错误:
错误:(46, 45) 错误:不是抽象的,也不是 覆盖 FindCallback 中的抽象方法 done(List,ParseException)
错误:(48, 16) 错误:名称冲突: done(List,ParseException) 在和 FindCallback 中的 done(List,ParseException) 具有相同的擦除, 但两者都没有覆盖另一个,其中 T 是一个类型变量:T 扩展 接口 FindCallback 中声明的 ParseObject
这里是Screenshot
【问题讨论】:
是你的 done 方法被声明为抽象。 【参考方案1】:您尚未参数化您的匿名 FindCallback
子类,因此您的 done
签名与 FindCallback#done
签名不匹配,因为未参数化版本中的 done
签名是 done(List<Object>results, ParseException e)
。
要修复它,请将其参数化:
userRelations.getQuery().findInBackground(new FindCallback<ParseObject>()
// Add ---------------------------------------------------^^^^^^^^^^^^^
【讨论】:
以上是关于错误:匿名类不是抽象的,不会覆盖抽象方法的主要内容,如果未能解决你的问题,请参考以下文章
AListener不是抽象的,并且不会在ActionListener中覆盖抽象方法actionPerformed(ActionEvent)
2.匿名类,匿名类对象,private/protected/public关键字abstract抽象类,抽象方法final关键字的使用,多线程Thread类start方法原理