Это был вопрос, заданный в интервью. Можно ли назвать один конструктор из другого, если класс имеет несколько конструкторов в java и когда? Как я могу назвать синтаксис?вызов одного конструктора из другого в java
ответ
Вы можете, и синтаксис я знаю
this(< argument list >);
Вы также можете вызвать супер класс Конструктор через
super(< argument list >);
Оба такие вызовы можно сделать только в качестве первого утверждения в конструктор (так что вы можете вызвать только один конструктор, и прежде чем что-либо еще будет сделано).
И вы не можете делать ничего, что требует ссылки на это. –
он также должен быть в первой строке конструктора – sixtyfootersdude
да, первая строка, поэтому он будет первым, который будет реализован – Francis
this(other, args);
Это либо вводит в заблуждение, либо просто неправильно! Что еще? Вы просто вызываете другой конструктор, используя 'this (args-required-by-constructor)' или 'super (args-required-by-constructor);' –
пример:
public class FileDb {
/**
*
*/
public FileDb() {
this(null);
}
public FileDb(String filename) {
// ...
}
}
Да, вы можете это сделать.
Посмотрите на ArrayList
реализации, например:
public ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
}
/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
this(10);
}
Второй конструктор вызывает первый один с default capacity
десять.
FYI, это называется telescoping/telescopic constructor pattern.
Это обсуждается в JLS 8.8.7.1 Explicit Constructor Invokations
- Альтернативных вызовы конструктора начинаются с ключевым словом
this
(возможно предварил с аргументами типа явными). Они используются для вызова альтернативного конструктора того же класса.- Соображения конструктора суперкласса начинаются либо с ключевого слова
super
(возможно, предваряется явным аргументом типа), либо в основном выражении. Они используются для вызова конструктора прямого суперкласса.
Ни один из ответов не являются полными, поэтому я добавляю этот, чтобы заполнить пробелы.
Вы можете вызвать один конструктор из другого в том же классе, или вызвать суперкласс, со следующими ограничениями:
- Она должна быть первая строка кода вызывающего конструктора.
- Он не может иметь явной или неявной ссылки на
this
. Поэтому вы не можете передать внутренний класс (даже анонимный, если он ссылается на какие-либо методы экземпляра) или результат нестатического вызова метода в качестве параметра.
Синтаксис (как уже отмечалось другими) является:
MyClass() {
someInitialization();
}
MyClass(String s) {
this();
doSomethingWithS(s);
}
- 1. Вызов конструктора из другого конструктора
- 2. Вызов одного конструктора из другого, перегружен в Java
- 3. Objective-C - вызов одного конструктора из другого
- 4. Вызов другого конструктора из конструктора в PHP
- 5. Java Вызов конструктора из другого конструктора без немедленного получения параметров
- 6. Вызов конструктора из конструктора другого класса
- 7. Вызов конструктора по умолчанию из другого конструктора
- 8. Вызов конструктора из другого класса
- 9. Вызов конструктора из другого класса
- 10. Вызов другого конструктора классов в Java
- 11. Вызов другого конструктора внутри конструктора
- 12. вызов функции одного класса из другого недопустимого аргумента конструктора
- 13. Вызов конструктора из другого метода в C++
- 14. вызов класса внутри другого класса конструктора? java
- 15. Вызов одного конструктора другими
- 16. Вызов конструктора из другого конструктора в том же классе
- 17. Вызов конструктора из другого конструктора в том же классе
- 18. Вызов одного модуля из другого
- 19. Вызов одного контроллера из другого
- 20. вызов конструктора копирования внутри другого конструктора
- 21. class inheritance вызов другого конструктора
- 22. Типичный вызов конструктора из другого конструктора, но дает мне ошибку
- 23. Вызов конструктора из другого конструктора того же класса
- 24. C# - Вызов конструктора из другого конструктора после некоторых вычислений
- 25. C++ вызов другого класса конструктора
- 26. Вызов суперкласса из конструктора подкласса в Java
- 27. Вызов метода из одного фрагмента из другого
- 28. Вызов функции из одного класса, из другого
- 29. Вызов супер-конструктора из конструктора подкласса в Java
- 30. Java: вызов конструктора класса
Можете ли вы прояснить этот вопрос? Несколько конструкторов существуют для создания объектов по-разному и могут быть вызваны из других классов.Они сделаны именно для этой цели. –
он имеет в виду вызов конструктора из другого. – Woot4Moo
он спрашивает, разрешено ли ему вызывать конструктор из другого конструктора или нет, когда класс имеет более одного конструктора. – Francis