安卓中的java ClassCastException。小装置。自动编辑完成
public class Review extends Activity {
private CustomAutoCompleteView autoComplete;
private ArrayAdapter<String> autoCompleteAdapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.review);
System.out.print("1");
autoCompleteAdapter = new ArrayAdapter<String>(this, 安卓.R.layout.simple_dropdown_item_1line);
System.out.print("2");
autoCompleteAdapter.setNotifyOnChange(true); d
autoComplete = (CustomAutoCompleteView) findViewById(R.id.autoCompleteTextView1);/*Line which is unable to cast throws Exception*/
autoComplete.setHint("Restaurant Name");
autoComplete.setThreshold(3);
autoComplete.setAdapter(autoCompleteAdapter);
autoComplete.addTextChangedListener(textChecker);
final EditText et1=(EditText)findViewById(R.id.editText3);
}
自定义自动完成视图。爪哇
public class CustomAutoCompleteView extends AutoCompleteTextView {
public CustomAutoCompleteView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public CustomAutoCompleteView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public CustomAutoCompleteView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void performFiltering(final CharSequence text, final int keyCode) {
String filterText = "";
super.performFiltering(filterText, keyCode);
}
/**
* After a selection, capture the new value and append to the existing
* text
*/
@Override
protected void replaceText(final CharSequence text) {
super.replaceText(text);
}
}
I am unable to cast AutoCompleteText class into CustomAutoCompleteView.Even though the class CustomAutoCompleteView contains a matching constructer.It throws a run time exception.Please Help me.
# 1 楼答案
如果类
B
扩展了A
,那么类B
可以强制转换为类A
,因为可以保证B
的所有实例也是A
的实例。但是,您不能保证A
的实例是B
,因此,如果您没有首先使用instanceof
来验证A
的实例实际上是B
的实例,那么从A
到B
的强制转换可以抛出ClassCastException
关于构造的语句(如果不适用),因为强制转换不使用构造函数且对象已存在