На ваш вопрос есть как минимум два ответа:
Нельзя включать конструктор в ваш класс. Компилятор Java добавит для вас конструктор с нулевыми параметрами по умолчанию.
Похоже, вы не должны создавать экземпляры своего класса в первую очередь. : -)
Вы сказали
Каждый раз, когда объект создается из других классов, я хочу, чтобы он имел те же переменные, что и они. назначенный в классе и без создания конструктора, Java позволяет мне получить доступ ко всем методам с правильными возвращениями, как я и ожидал.
Похоже, у вас примерно:
class TheClass {
public final SomeType variable = /*...*/;
// ...
}
... и вы делаете это:
TheClass instance = new TheClass();
doSomethingWith(instance.variable);
Нет причин создавать там экземпляр, просто используйте имя класса напрямую:
doSomethingWith(TheClass.variable);
Java несколько интересен тем, что позволяет получить доступ к static
членам через ссылки на экземпляры (instance.variable
), но нормальный способ доступа к ним - через класс (TheClass.variable
).
Также, если ваши static
участники не являются final
, вы можете получить очень запутанное поведение:
TheClass a = new TheClass();
a.variable = 1;
TheClass b = new TheClass();
b.variable = 2;
System.out.println(a.variable); // 2?!?!?!
В общем, лучше всего избегать доступа к static
участникам через ссылки на экземпляры.
Альтернативно, сделайте класс одиночным с экземпляром (не- static
) mem вместо этого.