有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓中的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) 个答案

  1. # 1 楼答案

    如果类B扩展了A,那么类B可以强制转换为类A,因为可以保证B的所有实例也是A的实例。但是,您不能保证A的实例是B,因此,如果您没有首先使用instanceof来验证A的实例实际上是B的实例,那么从AB的强制转换可以抛出ClassCastException

    关于构造的语句(如果不适用),因为强制转换不使用构造函数且对象已存在