2015-07-11 5 views
2

Как получить значение, которое объявлено и инициализировано другим способом без использования параметра в java?Локальная переменная метода метода с помощью другого метода

public class Value { 
    void method1() 
    { 
     int demo=10; 
     System.out.println("methd 1"+demo); 
    } 
    void method2() 
    { 
     System.out.println("method 2"+demo); 
    } 

    public static void main(String[] args) { 
     Value obj = new Value(); 
     obj.method1(); 
     obj,method2(); 
    } 
} 

Здесь переменная демонстрационная объявлена ​​в method1 и присваивается значение теперь мне нужно получить значение демо в методе 2 возможно ли это без какого-либо параметра, глобальной декларации, и нет метода геттер сеттер?

+1

'method2()' не имеет значения для 'demo', поскольку он не определен. В 'main()' у вас есть 'obj, method2()', который должен быть 'obj.method2()' – Charlie

+0

, вы должны изучить область переменной, это очень просто. – Rustam

+0

@ Rustam вы не должны критиковать людей за попытку учиться. –

ответ

3
public class Value { 
    void method1() 
    { 
     int demo=10; 
     System.out.println("methd 1"+demo); 
    } 
    void method2() 
    { 
     System.out.println("method 2"); 
     this.method1(); 
    } 

    public static void main(String[] args) { 
     Value obj = new Value(); 
     obj.method1(); 
     obj.method2(); 
    } 
} 

или

public class Value { 
int method1() 
{ 
    int demo=10; 
    System.out.println("methd 1"+demo); 
    return demo; 
} 
void method2() 
{   
    int demos = this.method1(); 
    System.out.println("method 2 "+demos); 
} 

public static void main(String[] args) { 
    Value obj = new Value(); 
    // obj.method1(); 
    obj.method2(); 
} 

}

6

Нет, это невозможно, потому что demo не существует после того, как method1 вернулся. Это локальная переменная в пределах method1.

... без каких-либо параметров, глобальных деклараций и без метода установки геттера?

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

Но только для полноты картины, вот demo как поле экземпляра:

public class Value { 
    private int demo; 

    void method1() 
    { 
     this.demo = 10; 
     System.out.println("method 1" + this.demo); 
    } 
    void method2() 
    { 
     System.out.println("method 2" + this.demo); 
    } 

    public static void main(String[] args) { 
     Value obj = new Value(); 
     obj.method1(); 
     obj.method2(); 
    } 
} 

Вы не требуется использовать this. при доступе к нему, но при этом дает понять, что это поле экземпляра, а не локальная переменная.

0

На самом деле

int demo 

в method1 только локальный по отношению к функции method1. Я не знаю, что java компилирует из такого кода, но вы можете быть уверены, что такая переменная просто войдет в регистр, когда вы будете использовать компилятор, который создает байт-код для вашего процессора. Вы просто используете это как удобное имя для переменной.

Если вы хотите использовать переменную в других методах, вам необходимо передать это значение в качестве элемента данных в class Value.

0

Хотя локальные переменные методов выбрасываемых во время компиляции, вы можете получить их, если вы компилируете с отладочной информацией javac -g. Вы можете использовать библиотеки байт-кодов ASM или BCEL. Если вы приостановите работу JVM с помощью агента отладки, вы также можете использовать API удаленного отладчика.

0
public class Value { 
    int demo; 
public int getDemo(){return demo;} 
public void setDemo(int demo){this.demo=demo;} 

    void method1() { 
     // demo=10; 
     System.out.println("methd 1"+demo); 
    } 

    void method2() { 

System.out.println("method 2"+demo); 
    } 

    public static void main(String[] args) { 
     Value obj = new Value(); 
//set the value of demo using setter method   

obj.method1(); 
     obj.method2(); 
    } 
} 
+0

Правда, но он не хотел, чтобы геттеры и сеттеры – TechWisdom

+0

могли ли мы удалить геттер и сеттер ??? Есть идеи –

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