У меня есть суперкласс с учеником подкласса. Я создал объект студента типа person и хотел вызвать специальный метод для ученика, который не существует в типе лица. У меня есть два метода ниже, которые могут это сделать, и мне было любопытно узнать, является ли один метод выше другого, или они оба добиваются того же результата?В Java есть предпочтительный метод литья объекта?
Person newStudent = new Student("Scott", 22, "B22334952");
//method1: make a reference of newStudent and cast to Student
Student studentRef = (Student) newStudent;
System.out.println(studentRef.getUserId());
//method2: cast newStudent, but don't create a reference
System.out.println(((Student) student2).getUserId());
Оба хороши. Используйте тот, который заставляет вас чувствовать себя комфортно. Если бы я несколько раз использовал 'studentRef', я бы использовал метод 1, если бы использовал его в одном методе LoC, а затем в методе 2. –
Надеюсь, ясно, что они дают одинаковый результат. Что предпочтительнее, полностью зависит от вашего полного использования. Почему у людей нет идентификатора пользователя? Это кажется довольно универсальным. Для этого необходимо сначала проверить тип; не зная точно, что вы делаете, трудно сказать, плохо ли это дизайн или нет. –
Трюк заключается в том, чтобы избежать необходимости бросать его в первую очередь. Но да, оба способа здесь одинаково хороши. –