2015-04-19 2 views
2

Я хочу добиться чего-то подобного. Объявить и инициализировать переменную типа тех примитивных типов данных. (Без необходимости использовать новое ключевое слово)Можно ли объявить переменную без использования «нового» типа «String»

MyClass myInstance = 123; 

Подобно String. Только тип «String» может это сделать, и это тоже класс!

String myString = "A string!"; 

Я хочу способ объявить некоторые переменные без использования new как new MyClass(123)

Спасибо!

+2

Объявите их без новых, да, инициализируйте, с другой стороны ... – Stultuske

+0

Ваш вопрос может быть понят после того, как я прочитал несколько раз, я рекомендую рассмотреть вашу грамматику или добавить дополнительные предложения, чтобы уточнить, что вы хотите сказать :) –

+0

Вы можете определить метод, который создает объект. Затем вы можете сказать «MyClass object = createMyClass (123)» вместо «MyClass object = new MyClass (123)», но это не может быть улучшением в большинстве случаев. – SpiderPig

ответ

7

Вы не можете сделать это с помощью пользовательских классов.

Единственными классами, поддерживающими такое создание, являются String и классы-оболочки примитивных типов (Integer, Boolean и т. Д.).

Вы можете создавать экземпляры пользовательских классов без «нового», если используете отражение, но тогда вы должны использовать метод newInstance() класса Class, который, похоже, не является тем, чего вы хотите достичь.

2

123 это число, myInstance является объектом, они не совместимы, таким образом, вы не можете назначить number (или string, или boolean) к переменной MyClass типа.

Единственный способ, которым это возможно в будущем, - это то, что если Java разрешит operator overloading (например, C++), на данный момент вам нужно придерживаться myInstance = new MyClass(123).

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