2010-01-18 4 views
1

Можно создать дубликат:
How do I create a static local variable in Java?Как получить доступ к переменной из одной функции в другую функцию в java? Может ли локальная переменная быть статической в ​​функции?

Привет Я нуб в Java Я хочу доступа локальной переменной функции в другой функции. Но java поддерживает java статическую переменную в функции? Если нет, то как получить доступ к этой переменной. Я не хочу превращать эту локальную переменную в переменную экземпляра cals.

Благодаря

+2

дубликат? http://stackoverflow.com/questions/2079830/how-do-i-create-a-static-local-variable-in-java – Thilo

ответ

1

В декларации вашего метода, когда вам нужно получить доступ к переменной, включить его в качестве параметра.

public int myMethod(int i){ 
    System.out.println(i); 
} 

И затем передать переменную этому методу в качестве параметра.

public static void main(String [] args){ 
    int myInt = 5; 
    myMethod(myInt); 
} 
+0

Таким образом, можно получить «содержимое» переменной, а не переменную сам. Например, нельзя назначить ему новое значение. – Thilo

0

Это зависит, но есть несколько способов.

Если вы находитесь в одном объекте, вы можете использовать обычную переменную-член, если вы звоните между объектами, вы можете просто предоставить геттеры и сеттеры для этой переменной. Альтернативно, если оба метода связаны друг с другом, просто укажите значение в качестве параметра.

Когда вы говорите об одной функции с другой функцией, неясно, имеете ли вы методы в одном классе или между разными классами. Возможно, если вы думаете о функциях на Java и не думаете о классах, объектах и ​​методах, вам будет полезно также переходить к элементам базовой ориентации объектов. Я знаю, что у меня была эта проблема часто, когда я делал переход от процедурного к объектно-ориентированному программированию. Это было давно, но this series of tutorials помог мне с этим многое.

0

Нет, вы не можете объявить статическую переменную в методе в java.

и вы не можете получить доступ к переменной из одного метода другим способом. скорее, если это объект, вы можете отправить ссылку на другой метод с помощью вызова метода. и если его примитив, то вы можете отправить его значение.

1
  1. В Java вы говорите «метод» вместо «функции».

  2. Что вы подразумеваете под «статической переменной в функции»? Если вы имеете в виду C/C++ style static local variable, то вам придется использовать переменную класса или экземпляра, в зависимости от ваших потребностей.

  3. «Локальный» означает, что что-то не может быть доступно за пределами его сферы. Таким образом, вы не можете получить доступ к локальной переменной метода извне тела метода, просто по определению.

  4. И почему вы не можете использовать переменную класса или экземпляра?

+0

Вы имеете в виду класс (статический) или поле экземпляра? – WildWezyr

2

Возможно, я совершенно не прав, но задача звучит для меня как часть концепции замыкания (даже если authod не означает ничего связанного).

Итак, ява путь:

public void foo() { 
    final SomeClass obj = new SomeClass(); 
    Bar b = new Bar() { 
     public void bar() { 
     obj.doSmth(); 
     } 
    }; 
} 

Конечно, этот конкретный код просто неполезным пример.