2014-10-09 10 views
1

Пусть это, если условие:Создан ли экземпляр?

(ObjectA) request.getParameter("something") != null 

Будет создан анонимный экземпляр ObjectA?

+0

http://stackoverflow.com/questions/9066218/casting-an-object-of-a-superclass-into-an-object-of-a-subclass-creates-a-new-obj – assylias

+0

Является ли это ' запрос '' HttpServletRequest'? –

ответ

0

в request уже есть экземпляр ObjectA, если он не является нулевым. Поэтому новый экземпляр не будет создан.

+0

вы хотите сказать, что в приведенном выше заявлении мы просто обращаемся к объекту, присутствующему в области запроса. Что делать, если я добавляю 'Object b =' перед условием? –

+0

будет отображаться ссылка на существующий экземпляр объекта – jBeenenga

+0

Мне интересно узнать о влиянии этого на процесс GC? Как будет увеличиваться или уменьшаться или без эффекта, на GC? в отношении работы, выполняемой GC. –

0

Нет, экземпляр не создается. Даже если метод возвращает некоторые объекты, он просто ссылается на ObjectA. Экземпляр был создан request.getParameter().

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

class Parent1 { static int j; Parent1(){j++;} } 
class Child extends Parent1{ static int i; Child(){i++;}} 

// and the code 
Parent1 pc = new Child(); 
System.out.println(Child.i); 
System.out.println(Parent1.j); 
Child p = (Child) pc; 
System.out.println(Child.i); 
System.out.println(Parent1.j); 

Выход

1 
1 
1 
1 
+0

Я не думаю, что ссылка на объект, возвращаемая 'request.getParameter (« something »)' casting, '(ObjectA) request.getParameter (« something »)! = Null' как запись' (ObjectA) true' или ' (ObjectA) false. Это должно быть 'if (request.getParameter (" something ")! = Null) {ObjectA Obj1 = (ObjectA) request.getParameter (" something ")}' –

0

Почему будет создан экземпляр ObjectA, (ObjectA) будет просто пытаться бросить возвращаемое значение из request.getParameter("something") != null к типу ObjectA.

0
request.getParameter("something") 

, который возвращает объект, и вы просто бросая его ObjectA, чтобы проверить его тип. Нет экземпляра/объекта.

Приходя к вашей фактической строки кода, вам не нужно слепок там просто

request.getParameter("something") != null 

достаточно.

+0

Я знаю, что именно поэтому я явно набираю его для 'Object A '. –

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