Java - Удостоверяется, что объект реализует интерфейс

Править: Решенный, посмотрите ниже

Привет,

В Java я получил объект, который мог иметь любой класс. НО - что объект должен будет всегда реализовывать интерфейс, поэтому когда я называю методы определенными интерфейсом, что объект будет содержать тот метод.

Теперь, когда Вы пытаетесь назвать пользовательский метод для родового объекта в Java, он небрежно обращается с вводом. Как я могу так или иначе сказать компилятору, что мой объект действительно реализует тот интерфейс, так вызов метода в порядке.

В основном то, что я ищу, является чем-то вроде этого:

Object(MyInterface) obj; // Now the compiler knows that obj implements the interface "MyInterface"
obj.resolve(); // resolve() is defined in the interface "MyInterface"

Как я могу сделать это в Java?

ОТВЕТ: хорошо, если интерфейс называют MyInterface, можно просто поместить

MyInterface obj;
obj.resolve();

Извините за не размышление перед регистрацией....

6
задан Jake 16 January 2010 в 14:24
поделиться

3 ответа

if (object instanceof MyInterface) {
    ((MyInterface) object).resolve();
}
1
ответ дан 17 December 2019 в 04:47
поделиться
MyInterface a = (MyInterface) obj;
a.resolve();

или

((MyInterface)obj).resolve();

Компилятор Java использует статический тип для проверки методов, поэтому вы должны либо отбрасывать объект к типу, который реализует ваш интерфейс или отбрасывает на себя интерфейс.

1
ответ дан 17 December 2019 в 04:47
поделиться

Вы просто делаете это с помощью типа типа :

((MyInterface) object).resolve();

Обычно лучше всего сделать проверку, чтобы убедиться, что этот актерс действителен - в противном случае вы получите ClassCastexexception . Вы не можете приобретать все, что не реализует MyInterface в MyInterface объект. То, как вы делаете этот чек, является оператором :

if (object instanceof MyInterface) {
    // cast it!
}
else {
    // don't cast it!
}
3
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: