为什么我不能从另一个类访问此方法?

时间:2011-05-29 23:11:43

标签: java android

我有主类扩展MapActivity,如下所示:

public class main extends MapActivity {
    private MapView mapView;

    ......//something

    public MapView getmapView() {
        return mapView;
    }

    ........//something
}

为什么我无法访问另一个类中的getmapView()方法,比如

MapView mv=main.getMapview()

2 个答案:

答案 0 :(得分:1)

您将访问静态方法的语法与访问实例(即非静态)方法的语法混淆。

您希望main类的每个实例拥有自己的MapView对象,还是希望所有main个对象共享一个MapView

如果您希望main类的每个实例拥有自己的MapView实例,则需要在getmapView()的实例上调用main方法class,而不是类本身的名称:

main myObject = new main();
MapView mv=myObject.getmapView();

如果您希望所有main个对象共享一个MapView,那么您的getmapView()方法和mapView成员本身需要声明为{{ 1}} ...

static

...然后您可以使用已发布的代码行调用静态public class main extends MapActivity { private static MapView mapView; ......//something public static MapView getmapView() { return mapView; } ......//something } 方法:

getmapView()

进一步阅读:请参阅Java教程中的this article以获得进一步说明。

答案 1 :(得分:0)

fisrt,如果您想使用主类名称访问您的方法,您的方法应该是静态方法,然后您可以执行以下操作:

MapView mv=main.getMapview(); 

如果你想在没有静态方法的情况下使用它,你应该将主类的一个实例传递给另一个类。

如果你想使用静态方法,那么试试这个:

public class Main extends MapActivity {
    private static MapView mapView;

    ......//something

    public static MapView getmapView() {
        if(mapView == null)
               mapView = new MapView();
        return mapView;
    }
    ........//something
}

在你的第二堂课中你可以简单地使用它:

MapView mv=Main.getMapview();