class Test {
void method2() {
System.out.println("This is outer class method");
}
static class M2 {
void method1() {
System.out.println("This is method1 in class m2");
}
}
public static void main(String[] args){
//test a=new test();
//a.method2();
}
}
我想从主类调用类M2中的method1。还有方法1中的method2。
答案 0 :(得分:2)
从method2调用method1很简单:
new M2().method1();
因为静态内部类几乎是常规类。
但是,由于内部类是静态的,它不对应外部类的任何实例,并且因为method2不是静态的,所以必须在实例上调用,所以没有直接调用该方法的方法,你仍然需要外部类的实例来调用方法:
new Test().method2();
答案 1 :(得分:2)
要从 method1 调用 method2 ,您必须创建一个Test
类的实例,因为您处于 static method1 中的上下文。
new Test().method2();
<小时/> 并从 main 调用 method1 :
new Test.M2().method1();
由于M2
是一个嵌套类,因此可以直接在外部类名 - Test 上访问它。如果它是一个内部类,你必须创建一个Test
的实例来访问它:
new Test().new M2().method1();
答案 2 :(得分:1)
这对你有用
public class Test{
void method2(){
System.out.println("This is outer class method");
}
static class M2{
void method1(){
System.out.println("This is method1 in class m2");
}
}
public static void main(String[] args){
M2 m2=new M2();
m2.method1();
}
}
答案 3 :(得分:0)
像往常一样,为了调用非静态方法,您需要一个实例来调用它。要么使方法静态,要么创建类的实例。以下是有关如何获取代码working的一个选项:
import java.util.*;
import java.lang.*;
class main{
static void method2(){
System.out.println("This is outer class method");
}
static class M2{
static void method1(){
System.out.println("This is method1 in class m2");
method2();
}
}
public static void main(String[] args){
M2.method1();
//test a=new test();
//a.method2();
}
}