2013-12-19 7 views
3
public class MyListFragment extends ListFragment {...} 

ListFragment listFragment = new MyListFragment(); 
ListFragment listFragment = (ListFragment) new MyListFragment(); 

Обе строки не скомпилируются с помощью «Нельзя отличить из MyListFragment в ListFragment».«Невозможно лить» Подкласс к суперклассу

+0

Это не тот же самый тип ListFragment, иначе MyListFragment не тот, который был отправлен. «Повышенный» не нужен. – user2864740

+0

Что? Это не общий. – Monstieur

+7

Возможно, это из другого * import *? – user2864740

ответ

4

То, что вы пытаетесь сделать, определенно действительно, поэтому должно быть что-то вне кода, который вы описываете, что вызывает проблему. Следующий код компилируется.

class A { 

} 

class B extends A { 

} 

private void test() { 
    B b = new B(); 
    A a = b; 
    A a2 = (A)b; 
    A a3 = new B(); 
    A a4 = (A)new B(); 
} 

Скорее всего, у вас плохой импорт, два класса с тем же именем, и вы импортировали один из неправильного пакета.

+0

Несомненно, Тим Б правильно, что вы пытаетесь сделать, полностью согласуется с законами oops. – Khay

1

Оба действуют

ListFragment listFragment = (ListFragment) new MyListFragment(); 


ListFragment listFragment =new MyListFragment(); 

Насколько OOPS обеспокоен проверить этот пример.

class SuperClass {} 
    class SubClass extends SuperClass { 
    public static void main(String[] x) { 
     SubClass sub = (SubClass) new SuperClass();  //1. ClassCastException 

     SuperClass sup = (SuperClass) new SubClass();  
     SubClass sub1 = (SubClass) sup;    //2. ok, why? 
    } 
} 

Поскольку компилятор проверяет только тип и проверку JVM на значение.

+0

Этот ответ не имеет для меня никакого смысла: s –

+0

В ваших ответах вы должны указать правильную терминологию OO. Если вы не знаете терминологию, узнайте об этом ... прежде чем вы ответите на другие вопросы, подобные этому. –

+0

Смущает и непонятно –

Смежные вопросы