据我所知,在Android编程中,可以在没有实例的情况下在一个类中调用非静态方法。例如,Android中如何在没有实例的情况下在一个类中调用非静态方法?
public class SampleActivity extends Activity {
private Textview tvSample;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
findViews();
}
public void findViews() {
tvSample = (TextView) findViewById(R.id.tvSample);
}
}
所以事情是,该findViews()方法的工作没有声明,即使它是一个非静态方法的变量。到目前为止,我已经知道在Java中,除非要将它用于实例,否则应该声明一个静态方法。所以示例代码不起作用。
public class Sample {
public static void main(String[] args) {
int a = 4;
printOnConsole(a);
}
public void printOnConsole(int a) {
System.out.println(a);
}
}
为了使上面的代码,你应该添加静态到printOnConsole()方法。
我是编程界的超级新手,因此可能会有一些关键点我现在错过了,所以请不要投我的问题没有价值,如果可能的话给我一些答案。
非常感谢你提前..
你不明白的静态含义 - 非静态上下文。在你的第二个例子中,你不能像这样调用'printOnConsole(int a)',因为你试图从一个静态的上下文中调用一个实例方法(* non-static *)而不是一个类方法(* static *),它是不允许没有您打电话给它的实例。阅读[了解班级成员](https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html)以掌握主题。 –
一般规则:静态方法可以调用对象的静态方法和非静态方法。非静态方法可以调用静态方法,对象的非静态方法以及它们声明的类的非静态方法及其超类。 –
是什么让你觉得'findViews'被调用时没有一个实例?它从不同的实例方法调用。 –