将非静态返回值合并到静态方法中?

时间:2011-10-14 11:29:41

标签: java

是否有任何技术可以在某些其他类的静态方法中使用某些类的非静态方法的返回值?

6 个答案:

答案 0 :(得分:5)

非静态方法的正确词是实例方法,因为它只能在其类的实例上调用。所以你需要的是用new创建的类的实例,然后你可以在其上调用实例方法。

我建议您阅读Java教程中的introduction to OO concepts

答案 1 :(得分:2)

很难知道在没有任何代码的情况下你想要做什么(即使尝试会很好),但是......

也许你想要单身人士模式:

public class MyClass {
    private static final MyClass INSTANCE = new MyClass();
    private MyClass() {}
    public static MyClass getInstance() {
        return INSTANCE;
    }
    public int someMethod() {
        // return some value;
    }
}

然后来自另一个班级:

public class TheirClass {
    public static int whatever() {
        return MyClass.getInstance().someMethod();
    }
}

答案 2 :(得分:0)

创建该类的实例,然后执行return instance.method();

答案 3 :(得分:0)

在静态方法中,创建非静态方法所在的类的实例,并在创建的对象上调用非静态方法。

没有其他办法,因为非静态方法可以调用其他非静态静态方法,并且它也可以使用对类实例的引用(“this”);所以它只能在类的实例上调用:

  

公共类A {

public int NonStaticMethodA() {
    int val; 
    .....
    return val;
} 
public int NonStaticMethodB() {
    int val=this.NonStaticMethodA(); 
    .....
    return val;
} 
     

}

     

公共等级B {

public static void StaticMethod() {
    A a = new A();
    int value = a.NonStaticMethodB();
    .....
} }

答案 4 :(得分:0)

如果您正在调用非静态方法,则必须对包含该方法的类的实例执行此操作。

答案 5 :(得分:0)

只要静态方法中有另一种类型的对象,就可以在该对象上调用该方法。

可以在静态方法中创建对象,将其作为参数传递给它,也可以是静态字段。