Это изменяет один объект на другой? if Imonitor
- это интерфейс, что означает Imonitor[] x = new Imonitor();
? Означает ли это, что мы можем создавать объекты интерфейсов?Что такое приведение типов в Java?
ответ
Смена одного объекта на другой?
(1) Нет. Для ссылочных типов
a = (typename)b;
сообщает компилятору, что вы «знаете», что объект, который «б» указывает также объект «TypeName» типа. То есть, это оператор поверх ссылок, а не объекта. (Для примитивных типов это фактически преобразование).
, если Imonitor представляет собой интерфейс, что делает IMonitor [] х = новый IMonitor(); означает?
(2) Не скомпилировать. Imonitor - это имя типа. Imonitor [] - это массив IMonitors.
Означает ли это, что мы можем создавать объекты интерфейсов?
(3) Нет, но вы можете создать массив ссылок на Imonitor, что и
new IMonitor[3]
будет делать.
Рассмотрите возможность расширения по различным темам. –
если Imonitor
- это интерфейс, чем new Imonitor();
не работает.
Imonitor[] x
- Imonitor
-array не Imonitor
переменная.
новый Imonitor() не будет работать, если Imonitor - это интерфейс - вы получите ошибку компиляции.
Чтобы создать объект, необходимо изменить тип, который компилятор считает объектом (статическим), и выполняет проверку. Когда программа запускается, JavaVm проверяет, что акты действительны, если не выбрано исключение.
Интерфейсы никогда не могут быть объектами, у вас должен быть класс, который реализует для этого интерфейс.
Как говорили другие (и я сделал это в своем комментарии), вы не можете напрямую создавать интерфейс. Я предлагаю вам ознакомиться с интерфейсами Java, чтобы они стали более знакомы с ними - они могут сбивать с толку сначала, но они являются важной частью языка.
Here is the section на интерфейсах в учебниках по Java.
Ну, кастинг делает разные вещи в зависимости от того, о каких типах вы говорите.Рассмотрю:
Object x = "hello";
String y = (String) x;
Это не меняет типа объекта - но это преобразование ссылки типа Object
к ссылке типа String
, проверяя, что ссылка либо относится к String
(или, в более общем плане, целевого типа броска или подкласса) или null.
Для примитивных типов, он на самом деле делает создать новое значение данных другого типа, изменяя информации скопированной, а не просто изменить ссылку на информацию:
double x = 10.5;
int y = (int) x; // The value of y is 10; x is unchanged though.
Относно интерфейсы:
Imonitor[] x = new Imonitor();
Это не скомпилируется напрямую. Но это будет:
Imonitor[] x = new Imonitor[2];
Это не создает каких-либо экземпляров самого Imonitor
- это просто создание массива с двумя «слотов», способные удерживать ссылки на объекты типов, реализующих из Imonitor
. Начальное значение в обоих этих слотах будет null
; вы можете заполнить массив следующим образом:
x[0] = new FirstImplementation();
x[1] = new SecondImplemnentation();
... создание экземпляров конкретных классов реализации.
Typecasting также известен как type conversion, он предназначен для изменения объекта из одного типа данных в другой. В не примитивных объектах приведение типов выполняется на объекты, имеющие определенные особенности иерархии. Пример: Person
объекта 2 подклассов называются Parent
и Child
(оба подклассы имеют одинаковую hierchical структуры, поскольку они наследуют Person
), следовательно, это правильный тип преобразование:
Person person = new Parent();
Parent parent = (Parent) person;
Для примера, Imonitor[] x = new Imonitor();
не компилируются, как вы присваиваете единый объект Imonitor
экземпляру, который ожидает массив из Imonitor
.
Но это будет составлять:
Imonitor[] x = new Imonitor[2]; //Assigning 2 elements to array 'x'
Предположим, что у вас есть интерфейс:
public interface IMonitor {
public void monitor(Monitorable object) throws MonitorException;
}
Тогда это не будет тип литья пример, но назначение:
IMonitor x = new IMonitor() {
public void monitor(Monitorable object) throws MonitorException {
//Implementation done here...
}
};
(Приведенный выше пример демонстрирует anonymous class).
Я надеюсь, что это ясно.
- 1. Используя приведение типов и дженерики в Java
- 2. Приведение типов между несвязанными классов в JAVA
- 3. Как выполнить приведение типов?
- 4. Приведение нуля в Java
- 5. calloc(), приведение типов, и указатель
- 6. Что такое ошибка неупорядоченных типов?
- 7. Неявное приведение типов не работает
- 8. Ссылки на объекты и приведение типов в JAVA
- 9. Приведение объектов в примитивы Java
- 10. с босыми Приведение типов данных в обертке
- 11. в C Приведение типов и использование скобок
- 12. Приведение типов в Visual C++ DLL Программирование
- 13. Не понимаю приведение типов в C
- 14. MySQL: Приведение типов NULL в 0
- 15. Что это значит * (int *) & x, когда приведение типов?
- 16. Проверьте это приведение типов в C++
- 17. Приведение типов в C++ и обработка исключений
- 18. Как сделать типичное приведение типов в delphi?
- 19. Приведение типов объектов Python и XML
- 20. Использует ли приведение типов дополнительные циклы процессора
- 21. Приведение типов INT указатель плавать указатель
- 22. Что такое очередь абстрактных типов данных?
- 23. Что такое импорт для типов opengl?
- 24. Что такое отличный особый способ проверки типов?
- 25. Динамическое приведение типов во время выполнения
- 26. Общий метод не явное приведение типов
- 27. C++ конструктор копирования и приведение типов
- 28. Java полиморфизм понижающее приведение
- 29. Что такое ярлык VS для иерархии типов?
- 30. Что такое заполнитель sscanf для типов uint8_t?
Вы не можете напрямую создать интерфейс. – Paul