2015-11-22 3 views
-1

Я не мог найти информацию, если можно написать public void в разделе конструктора. Является ли это возможным?Java - Можно ли написать public void() в Constructor?

+0

Что вы имеете в виду «в конструкторе»? Вы хотите объявить конструктор как public void? – Shikloshi

+2

Этот вопрос является полностью неясным, неполным, чрезмерно широким, главным образом основанным на мнениях, или не связан с программированием, как описано в справочном центре, и вряд ли он будет исправлен путем редактирования. –

+0

Вы имеете в виду объявление метода внутри конструктора ?? –

ответ

1

На уровне кода байта конструктор всегда недействителен, поэтому было бы лишним указать его. т. е. конструктор всегда называется <init>V, то есть V является типом возврата, где V == void. Аналогичным образом статический инициализатор равен <clinit>V Вы увидите это обозначение, если в этих методах вы берете трассировку стека (например, распечатываете исключение).

Конструктор фактически принимает объект для инициализации в качестве аргумента, поскольку объект создается до вызова конструктора. Примечание: вы можете создать объект без вызова конструктора с Unsafe.allocateInstance(Class)

я не мог найти информацию, если это возможно, чтобы написать общественную пустоту в конструкторе разделе. Является ли это возможным?

Невозможно записать его, поскольку Java отличает конструктор от метода, так как он должен иметь то же имя, что и класс, и не должен указывать тип возвращаемого значения. Если вы укажете тип возврата, он предполагает, что это метод.

Обозначение x = new Clazz() также ограничивает количество возвращаемых значений до 1, являющегося объектом. Нет простого способа изменить эту нотацию, чтобы вернуть несколько объектов. то есть поддерживать тип возврата для конструкторов было бы непросто.

Если вы хотите определить тип возврата, скорее всего, вы думаете о таком факторном методе.

public static MyInterface createObject() { 
    return new MyClass(); 
} 

Обратите внимание, что тип возврата отличается от класса, фактически созданного, но есть только одна ссылка.

0

Вопрос неясен. Питер Лори ответил на одну интерпретацию, это ответ другому.

Вы не можете объявлять методы внутри конструктора. Однако вы можете объявить класс и объявить переменные.

Поскольку вы можете объявить класс внутри конструктора, вы можете объявить метод внутри класса, а затем использовать класс. Если метод не является статичным, вы можете построить объект класса.

0

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

public A() { 
    class B { 
    public void m() { 
    } 
     } 
    } 
Смежные вопросы