2013-10-25 3 views
-2

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

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

Главный класс

public class testAll 
{ 
    public static void main(String[] args) 
    { 
     One one = new One(); 
     Two two = new Two(); 


    } 
} 

Первый класс:

public class One 
{ 

    public int test = 4; 

    public int getTest() 
    { 
     return this.test; 

    } 


} 

Второй класс:

public class Two 
{ 

    public void value() 
    { 
     System.out.print("Var is: " + One.getTest()); 

    } 


} 

Спасибо,

Naz

+1

Какую точную переменную вы пытаетесь пройти ??? Где вы пытаетесь передать его ??? Какова точная ошибка, которую вы получаете? –

+0

это звучит как действительно плохая идея –

+0

@PhilippSander идея распространена, вопрос не так ясен. – SeniorJD

ответ

2

Давайте рассмотрим это, если вы хотите получить доступ к переменной в классе А от класса B, то класс А должен знать о классе B.

public class A { 

    public A(B classB){ 
     this.classB = classB; 
    } 

    public void printValue(){ 
     System.out.println(this.classB.getTest()); 
    } 
} 

Теперь вы будете нуждаться передать экземпляр ClassB в ClassA в конструкторе, чтобы класс A ссылался на ClassB, когда он вызывает printValue();

ClassB b = new ClassB(); 
ClassA a = new ClassA(b); 
b.getTest(); 
a.printValue(); 
1

Сначала нужно создать экземпляр для класса One. Попробуйте

public void value() 
{ 
    One one_object = new One(); 
    System.out.print("Var is: " + one_object.getTest()); 

} 
+0

Будет ли это тот же объект или новый объект, чтобы я не мог получить доступ к данным, от объявленного в главном? – nazerb

+0

это другое и локально только для этого метода. –

1
public class Two { 

    private One one; 
    public Two(One one) { 
     this.one = one; 
    } 

    public void printValue() { 
     System.out.print("Var is: " + one.getTest()); 
    } 
} 

public class Main { 
    public static void main(String [] args) { 
     One one = new One(); 
     Two two = new Two(one); 

     two.printValue(); 
    } 
} 
+0

Я был бы осторожен в вызове метода, который просто выводит строку 'getValue'. Такой тип подразумевает, что он что-то вернет. –

+0

Вы правы, 'printValue' лучше. – SeniorJD

0

Есть два способа - передать ссылку или передать значение:

public class One { 
    private int value = 0; 
    public One(final int value) { 
     this.value = value; 
    } 
    public int getValue() { return value; } 
} 

public class Two { 
    private One one = null; 

    public Two(final int value) { 
     this.one = new One(value); 
    } 

    public Two(final One one) { 
     this.one = one; 
    } 

    public int getValue() { return one.getValue(); } 
} 

При прохождении ссылки на один экземпляр, то значение считывается из одного и изменит его только значение, удерживаемым внутри одного экземпляра. При передаче примитива (int, boolean ...) значение копируется и «принадлежит» экземпляру Two. Прочтите еще немного о различиях в ссылках и ценностях, чтобы понять идею. Это довольно просто, как только вы получите эту идею.

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