Перейти к содержимому

Как обратиться к переменной из другого класса java

  • автор:

как вызвать переменную в другом классе?

короче , есть переменная которую я инициализирую в if’е , и надо как-то эту инициализированую переменуую использовать в другом классе , я пытался сделать через Getter но выводит null, хоть и условие ифа выполняется . Как вывести эту переменную инициализируемую в другом классе

Отслеживать

задан 24 июл 2020 в 12:46

1 2 2 бронзовых знака

Опишите конкретно и понятно вашу проблему и приложите ваш код для ее воспроизведения.

Commented 24 июл 2020 в 12:51

у вас есть какой то код (код), у вас есть представление как он работает (ваше представление(код)), вы пытаетесь это изложить (ваш текст(ваше представление(код))), читатели понимают его по своему (читатели(ваш текст(ваше представление(код)))), таким образом ваш код прошел минимум 3 преобразования между кодом и понятием читателя и из за такого количества преобразований никто даже при всем желании не поймет о чем вы тут пишете. Это все равно что слушать сплетни о вашем коде.

Commented 24 июл 2020 в 13:27

крч я нашел ответ на свой вопрос всем спасибо!

Commented 24 июл 2020 в 17:23

Как обратиться к переменной из другого класса?

Как получить значение из spinnerOfHeight в классе CalculateActionListener ?

Отслеживать

9,466 4 4 золотых знака 42 42 серебряных знака 57 57 бронзовых знаков

задан 17 фев 2015 в 13:48

user28831 user28831

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Создай конструктор для CalculateActionListener класса, туда и засунь ссылку на свою переменную, ЛИБО в конструктор слушателя отправь JSpinner.

class CalculateActionListener implements ActionListener < private JSpinner jSpinner; CalculateActionListener(JSpinner s) < jSpinner = s; >public void actionPerformed(ActionEvent e) < //делай что хочеш тут со своим спиннером. >> 

Отслеживать

ответ дан 17 фев 2015 в 13:51

3,395 2 2 золотых знака 21 21 серебряный знак 42 42 бронзовых знака

для тебя лучше второе.

Commented 17 фев 2015 в 14:17

код покажи. я не представляю о чём ты

Commented 17 фев 2015 в 14:46

Через экземпляр класса. Например

public class First < int count=0; // переменна public First()<>// конструктор public First(int count) < // конструктор this.count=count; >> class Second < //. First f = new First(); f.count=1; // нужная переменная >

Отслеживать

51.4k 88 88 золотых знаков 269 269 серебряных знаков 508 508 бронзовых знаков

Как обратиться к переменной другого класса

Author24 — интернет-сервис помощи студентам

Здравствуйте! Подскажите пожалуйста: как обратиться к переменной из одного класса находясь в другом? Вот пример:
Имеем класс Cat:

public class Cat extends Animal public Cat(String name, String type, String voice, int age, int speed) super(name, type, voice, age, speed);
>

public static void main() Cat cat1 = new Cat(«Murka «, «Cat «, «Myuu «, 5, 25);
System.out.println(cat1.name+cat1.type+cat1.voice+cat1.age+cat1.speed);
>

>
Он наследуется от класса Animal:

public class Animal String name;
String type;
String voice;
int age;
int speed;

public Animal(String name, String type, String voice, int age, int speed) this.name = name;
this.type = type;
this.voice = voice;
this.age = age;
this.speed = speed;
>
>, что в данном случае, как понимаю, никакого значения не имеет.

А вот теперь еще есть класс Dog. И я в нем хочу вызвать cat1.name. Как мне это сделать? Метод Cat.main я могу вызвать, а как обратиться к cat1.name и вообще cat1 параметрам?
public class Dog public static void main(String[] args) Cat.main();
>
>

Спасибо за помощь.

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как обратиться к переменной из другого класса?
Как получить значение spinnerOfHeight package net.net78.zarsite; import.

Обратиться и изменить переменную из другого класса
Подскажите, как можно поменять переменную из другого класса? Мне уже сказали что это можно сделать.

Вызов переменной из другого класса
Всем привет, я захотел сделать элементарный кукулятор, и я джавой занимаюсь около недели, так вот.

164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301

Лучший ответ

Сообщение было отмечено Rudy_SRF как решение

Решение

Ниже показано четыре способа добраться до полей класса Cat.
Самый верный через методы класса Animal/Cat.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
public class Animal { String name; String type; String voice; int age; int speed; public Animal(String name, String type, String voice, int age, int speed) { this.name = name; this.type = type; this.voice = voice; this.age = age; this.speed = speed; } public String getName() { return name; } public String getType() { return type; } public String getVoice() { return voice; } public int getAge() { return age; } public int getSpeed() { return speed; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
public class Cat extends Animal { public static Cat cat1Clone; public Cat(String name, String type, String voice, int age, int speed) { super(name, type, voice, age, speed); } public static Cat getCat() { Cat cat1 = new Cat("Murka ", "Cat ", "Myuu ", 5, 25); return cat1; } public static void main() { Cat cat1 = new Cat("Murka ", "Cat ", "Myuu ", 5, 25); cat1Clone = cat1; System.out.println(cat1.name + cat1.type + cat1.voice + cat1.age + " "+cat1.speed); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
public class Dog { public static void main(String[] args) { // если мы хотим обратиться к полю объекта Cat Cat cat2 = new Cat("Lapka ", "Cat ", "Murr ", 3, 16); System.out.println("Cat2: " + cat2.name + " " + cat2.type + " " + cat2.voice + " " + cat2.age + " " + cat2.speed); // если нам нужна cat1 созданная классе Cat Cat cat3 = Cat.getCat(); System.out.println("\nCat3: " + cat3.name + " " + cat3.type + " " + cat3.voice + " " + cat3.age + " " + cat3.speed); // если мы хотим именно к оригинальной cat1 которая создана в методе System.out.print("\nRun Cat.main(): "); Cat.main(); // создали внутри функции cat1 и заполнили cat1Clone Cat cat4 = Cat.cat1Clone; System.out.println("\nCa1Clone: " + cat4.name + " " + cat4.type + " " + cat4.voice + " " + cat4.age + " " + cat4.speed); // доступ через методы класса Animal/Cat Cat cat5 = new Cat("Simka ", "Cat ", "Mooo ", 2, 21); System.out.println("\nCat5: " + cat5.getName() + " " + cat5.getType() + " " + cat5.getVoice() + " " + cat5.getAge() + " " + cat5.getSpeed()); } }

Как обратится к приватной переменной из другого класса в Java

Тут другой вопрос (принципиальный) встает. — Зачем вообще такие строгости с инкапсуляцией ? Кому надо обойти, все равно обойдет. Только программа непонятней становится.

Commented 19 апр 2012 в 8:39

Не совсем понял, что вы имели в виду «Кому надо обойти, все равно обойдет» ? Использование reflection взломом не считается, — достаточно посмотреть исходники пакета: он позволяет делать все, кроме того что запрещено (для любого подобного действия java проверяет permissions). По умолчанию все разрешено, — поэтому эти «кулхаки» работают. В апплетах наоборот, многое запрещено. Ни работы с приватными файлами, ни работы с локальной сетью. Чтоб это начало работать, надо задавать permissions отдельно (в обоих случаях). Или вы имели в виду взлом с редактированием памяти JVM?

Commented 19 апр 2012 в 10:53

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

Commented 19 апр 2012 в 10:56

Абсолютно не имел в виду какой-то взлом или злонамеренное использование. Речь об удобстве использовании кода (библиотек), который вообще-то (при желании) может быть изменен (программистом, вызывающим его) на уровне исходников. То, что Java (и другие, знакомые мне системы программирования) действительно удобного доступа к внутренностям объектов не предоставляет, мне известно.

Commented 19 апр 2012 в 11:19

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

B b = new B(); Class clazz = B.class; Field iField = clazz.getDeclaredField("i"); iField.setAccessible(true); int fieldValue = iField.getInt(b); System.out.println("i mt24">
)" data-controller="se-share-sheet" data-se-share-sheet-title="Поделиться ссылкой на ответ" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter " data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Поделиться
)" title="">Улучшить ответ
)">изменён 18 апр 2012 в 2:12
ответ дан 18 апр 2012 в 0:27
6
    а если класс B абстрактный и его инстанс не получить, можно как-нить?
    – Yura Ivanov
    Commented18 апр 2012 в 1:03
    Через экземпляр класса, который отнаследован от асбстрактного, не? Нет конкретного инстанса - нет данных в объекте - нельзя получить значение. Можно наверно извратиться и создать динамически класс, наследуемый от абстрактного, потом создать инстанс.
    – bald2b
    Commented18 апр 2012 в 1:25
    Сорри, замените Field iField = B.class.getDeclaredField("i"); на Class clazz = B.class; Field iField = clazz.getDeclaredField("i");
    – bald2b
    Commented18 апр 2012 в 2:03
    да, спсибо.я уже исправил
    – serhio28
    Commented18 апр 2012 в 2:06
    а кроме reflection другого способа нет? может быть через сериализацию?(слабо в этом разбираюсь поэтому и спрашиваю)
    – Viacheslav
    Commented18 апр 2012 в 23:53
|Показать ещё 1 комментарий
0

Мне кажется, проще в класс А добавить метод

public int getI()

так называемый, getter .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *