我导入了完整的包名/ java文件,如果我执行了<classname>.<method>
,有时我可以访问它 - 有时候我会得到很多can't use a static in a non static
一堆谈话
我承认我是Java的新手,所以我需要做什么?先调用一个类实例,然后调用我的方法?我对此感到困惑,因为我想将所有'函数'放入一个FunctionsList.java文件中,并将所有主要的Activity(UI)放入MyActivity.java文件中。
例如:
<MyActivity.java>
import com.example.FunctionsList;
private class MyActivity extends Activity {
FunctionsList.function();
}
9/10次我得到静态/非静态错误。
如果我将所有功能都放入MyActivity.java,我就没有问题了!任何人都可以帮助我,我认为这是一个基本的Java新手问题?
答案 0 :(得分:14)
这是一个有希望帮助你的例子。
public class MyFunctionClass {
public String myFunction() {
return "This is an instance function.";
}
public static String myStaticFunction() {
return "This is a static function.";
}
}
然后在你的活动中,你有类似的东西。
public class MyActivity extends Activity {
@Override
public void onCreate() {
// If you want to call your static function, you do not
// require an instance of a MyFunctionClass object.
String myStaticString = MyFunctionClass.myStaticFunction();
// If you want to call your instance function, then you need
// to create a MyFunctionClass first.
MyFunctionClass variableName = new MyFunctionClass();
String myInstanceString = variableName.myFunction();
}
}
正如乔恩所说,如果你在潜水之前阅读面向对象的编程,你可能会省去一些挫败感。在潜入之前,新程序员需要了解一些基本的东西。祝你好运!
答案 1 :(得分:3)
如果要使用非静态方法,则必须具有该类的实例才能调用该方法。如果要使用静态方法,则不需要实例。
举个例子,假设你试图打电话给String.length()
- 那会有什么回报呢?它试图找到某些东西的长度,但你没有指定你感兴趣的字符串。对于其他实例方法也是如此 - 结果通常会取决于你正在调用它们的对象,这就是为什么它们是实例方法的开始。
顺便说一句,我强烈建议您首先学习Java的基础知识,在尝试使用Android之前。这样当你遇到真正棘手的问题时,你不必怀疑它是否是Android的一部分,或者它是否是一个简单的Java错误。有关此问题的更多建议,请参阅my answer on a related question。