2015-11-05 6 views
0

Это может быть простой вопрос для ответа, но я новичок в программировании. Мой вопрос заключается в том, как создать динамический экземпляр класса. Например, у меня есть класс окружения, который имеет методы вычисления области и половины области и т. Д., А конструктор классов инициализирует все поля класса, такие как радиус и другие поля. То, что я хочу сделать, это создать экземпляр класса всякий раз, когда пользователь хочет создать новый круг. Чтобы создать класс круга это то, что я в настоящее времядинамически создающий объект [java]

circle c1 = new circle(radius); 

, но этот объект статически создается, когда я пишу код, так как я могу создать новый экземпляр класса, когда пользователь хочет создать новый объект ,

Благодарим за любую помощь заранее. Пожалуйста, будьте любезны для программирования.

+0

инициализации 'c1', когда пользователь хочет, чтобы это было создано? – SomeJavaGuy

+0

Это простой случай выражения if-else. , если пользователь хочет, чтобы объект затем создал его и вернул его в c1. иначе делать то, что хочет поток кода. – shaun

+0

, если вы хотите создать свой объект при запросе пользователя, просто поместите свою строку в блок, который обрабатывает взаимодействие с пользователем. Т.е. в прослушивании кнопок – user902383

ответ

-1

Синтаксис как:

ObjectName obj=Class.forName("object name full name").newInstance(); 

Например, у вас есть класс с именем автомобиля, который обитал в пакете com.toyota. Тогда вы можете создать экземпляр объекта Car, используя следующее заявление:

Car car=(Car)Class.forName("com.toyota.Car").newInstance(); 
+0

Этого также следует избегать, если у вас нет законной необходимости в нем. Отражение не предназначено для использования в качестве инструмента «все-все», когда существуют вполне допустимые методы для выполнения одного и того же с обычным программированием. – Kayaman

1

Посмотрите, как просто это может быть

Circle c1 ; 
//{ 
    // your users wish and store it in some boolean var . 
//} 

if (userWantsObjectCreation) { 
     c1 = new Circle(); 
} 
else { 
    // your holy logic here instead if object creation . 
} 
+0

Спасибо за ваш ответ, я понимаю код, который вы указали, но я хотел знать, как я создаю новый экземпляр класса, когда пользователь хочет новый экземпляр класса circle. В приведенном выше коде будет создан новый экземпляр круга или он будет превышать существующий объект окружности, который был создан – Raptor9

+0

В основном мы не переопределяем объекты, у вас есть определение круга (класс Circle). Теперь, когда вам требуется просто создать объект, как вы упомянули в своем вопрос. – shaun

0

Вы можете принимать входные данные от пользователя просят «создать круг ввести Y или N », а затем использовать, если иное условие

if("Y".equals(input)) 
{ 
c1 = new Circle(); 
} 

else{ 
//something else 
} 
+3

Не сравнивайте строки с '=='. –

+1

просто небольшое предложение, замените его на «Y» .equals (input), чтобы вы сделали его нулевым, иначе вы рискуете NPE – user902383

0

В принципе, вы должны сохранить все созданные круги в структуре« списка ».

Например:

List<Circle> list = new ArrayList<Circle>(); 

Circle c1 = new Circle(radius); 
list.add(c1); 

... 

void onUserClickedCreateCircle() { 
    Circle c = new Circle(15); 
    list.add(c); 
} 

void renderAllCirclesOnScreen() { 
    //Take each circle from the list into variable c 
    for (Circle c : list) { 
     drawCircle(c); 
    } 
}