Бит застрял на моем Java-коде. Я скорректировал код ниже, чтобы дать тривиальный пример, ответы по-прежнему будут применимы. В принципе,Вызов метода для объекта, созданного другим методом?
У меня есть три класса файлов: GUI, main, pipe1.
Мой GUI принимает некоторые значения для переменных: length
и height
. Затем он вызывает main.makePipe
, который является статическим методом, содержащим оператор if, который затем создает новый pipe1
под названием createdPipe
. Пример:
public static void makePipe(double length, double width){
if(length > 0 && length < 4){
pipe createdPipe = new pipe1(length, height);
Теперь мой новый объект createpipe
имеет метод basicCost
который делает возврат стоимости трубы:
protected void calculateCost(){
double basicCost = height * length + 300;
return basicCost;
}
я застрял на том, как получить это возвращаемое значение, все пути назад к классу GUI? Если я бегу (в моем классе GUI):
createdpipe.calculateCost();
он говорит, что не может найти символ. Справедливо. Если я создаю метод в main
и поставить:
public double finalCost(){
pipeCost = createdPipe.calculateCost();
return pipeCost;
}
и попытаться вызвать его из моего GUI (main.finalCost
) я получаю: не статический метод не может быть справка из статического контекста.
Я понимаю, почему, но может ли кто-нибудь сказать мне, как я могу сделать этот объект известным классу GUI или способ, которым я могу рассчитать данные в классе pipe1 и вернуть данные в класс GUI, который будет использоваться?
Или используйте 'makePipe' как тип фабричного метода, который возвращает новые экземпляры' pipe1', но он по-прежнему является правильной концепцией. Но я бы предпочел не использовать 'static', поскольку OP не имеет ;) – MadProgrammer
Спасибо за ответ, к сожалению, я не могу сделать calcCost статическим методом, потому что он приводит к тому, что другие переменные, используемые в методе, вызывают нестационарную ошибку переменной .. любые другие предложения? – user3053434
@ user3053434, извините, должен объявить finalCost как статический метод, public public double finalCost() ' –