Java 从主目录外的方法访问类对象

Java 从主目录外的方法访问类对象,java,class,methods,Java,Class,Methods,很抱歉,如果标题没有它应该是准确的,甚至可能是错误的翻译我的一部分。我是德国人,也是一名代码初学者,所以请你给我放轻松。 所以我用JAVA编写了一个程序。这是一个银行账户的程序,我在一本书中找到了它,并试图扩展它。现在,为了在这个线程中保持简单,我显然减少了关于这个问题的示例代码 public class Test1 { public static void method(){ k.setNumber(300); // This is where the problem is. Fro

很抱歉,如果标题没有它应该是准确的,甚至可能是错误的翻译我的一部分。我是德国人,也是一名代码初学者,所以请你给我放轻松。 所以我用JAVA编写了一个程序。这是一个银行账户的程序,我在一本书中找到了它,并试图扩展它。现在,为了在这个线程中保持简单,我显然减少了关于这个问题的示例代码

public class Test1 {
public static void method(){
    k.setNumber(300);  // This is where the problem is. From this method 
                       // I cannot acces the in main created class 
                       // object from 'Test'
    }

public static void main(String[] args) {

    Test k = new Test();

    method();
    k.getNumber();

}

}
现在是课堂测试:

public class Test {

int number;

public int getNumber(){
    return number;
}

public void setNumber(int nr){
    number = nr;
}
}
那有什么办法吗?否则,我将不得不在“main”中编写所有内容,这在本例中是没有问题的,但在我的原始代码中,这并不容易做到

谢谢你的帮助和建议。希望以前没有发布过,因为我已经搜索过这个网站和web。

您需要定义

Test K = new Test()
在两种方法之外,即main和method。大多数情况下,您需要使“K”全局对这两种方法都可见。

您需要定义

Test K = new Test()

在两种方法之外,即main和method。大多数情况下,您需要使“K”全局对两种方法都可见。

目前,
K
只属于主方法。要从同一类中的其他方法访问它,需要将其设置为类变量。这应该是您所需要的:

public class Test1 {
    private static Test k;

    public static void method() {
        k.setNumber(300);
    }

    public static void main(String[] args) {
        k = new Test();
        method();
        k.getNumber();
    }
}

目前,
k
只属于main方法。要从同一类中的其他方法访问它,需要将其设置为类变量。这应该是您所需要的:

public class Test1 {
    private static Test k;

    public static void method() {
        k.setNumber(300);
    }

    public static void main(String[] args) {
        k = new Test();
        method();
        k.getNumber();
    }
}
您可以这样做:

    public class Test1 {
public static void method(Test k){
    k.setNumber(300);  // This is where the problem is. From this method 
                       // I cannot acces the in main created class 
                       // object from 'Test'
    }

public static void main(String[] args) {

    Test k = new Test();

    method(k);//pass this test class instance to method
    k.getNumber();

}

}
您可以这样做:

    public class Test1 {
public static void method(Test k){
    k.setNumber(300);  // This is where the problem is. From this method 
                       // I cannot acces the in main created class 
                       // object from 'Test'
    }

public static void main(String[] args) {

    Test k = new Test();

    method(k);//pass this test class instance to method
    k.getNumber();

}

}

您可以将
k
设置为全局变量,也可以像这样在
method
的参数中传递它

public static void main( String[] argv )
{
    final Test k = new Test();

    method( k );
    System.out.println(  k.getNumber() );
}

public static void method(Test k)
{
    k.setNumber( 2 );
}

您可以将
k
设置为全局变量,也可以像这样在
method
的参数中传递它

public static void main( String[] argv )
{
    final Test k = new Test();

    method( k );
    System.out.println(  k.getNumber() );
}

public static void method(Test k)
{
    k.setNumber( 2 );
}

您还可以将其用作方法的变量:

public class Test1 {

public static void method(Test test){
    test.setNumber(300); 
}

public static void main(String[] args) {
  Test k = new Test();

  method(k);
  k.getNumber();
 }

}

您还可以将其用作方法的变量:

public class Test1 {

public static void method(Test test){
    test.setNumber(300); 
}

public static void main(String[] args) {
  Test k = new Test();

  method(k);
  k.getNumber();
 }

}

k
也应该是
static
。它可以工作!!非常感谢你和所有努力帮助我的人。在这个过程中,我也明白了为什么p'rivate static Scanner'是一个类变量。这是一个类似的情况。
k
也应该是
static
。它可以工作!!非常感谢你和所有努力帮助我的人。在这个过程中,我也明白了为什么p'rivate static Scanner'是一个类变量。这是一个类似的案例。