2
import java.lang.*;

class mythread implements Runnable {

    Thread t1;
    String name = "";

    mythread(String thname){

        name = thname;
        t1 = new Thread(this, name);
        System.out.println("Child thread starting" + t1 );
    }

    @Override
    public void run() { 
        for(int i = 5 ; i > 0 ;i--){
            System.out.println("Name Of Thread" + t1 + i);
        }   
    }


    class t {

        public static void main(String args[]) {

            mythread m1 = new mythread("Child Thread 1");
            mythread m2 = new mythread("Child Thread 2");

            try {

            for(int i = 5 ; i > 0 ;i--) {
                System.out.println("Main Thread" + i);
                Thread.sleep(2000);
            }

        }
        catch(InterruptedException e){

            System.out.println("Main Thread Interrupted");
        }


     }
}

错误出现在public static line

Illegical static declaration in inner class `mythread.t` modifier static is allowed in constant variable declaration
4

3 回答 3

3

根据错误消息,内部类无法访问静态变量;

删除类 t 或将其声明为静态;有用:

// class t {   // Remove it

        public static void main(String args[]) {

            mythread m1 = new mythread("Child Thread 1");
            mythread m2 = new mythread("Child Thread 2");

            try {

            for(int i = 5 ; i > 0 ;i--) {
                System.out.println("Main Thread" + i);
                Thread.sleep(2000);
            }

        }
        catch(InterruptedException e){

            System.out.println("Main Thread Interrupted");
        }


    // }
于 2013-07-23T13:19:04.840 回答
1

缺少一些括号

import java.lang.*;

class mythread implements Runnable {

    Thread t1;
    String name = "";

    mythread(String thname){

        name = thname;
        t1 = new Thread(this, name);
        System.out.println("Child thread starting" + t1 );
    }

    @Override
    public void run() { 
        for(int i = 5 ; i > 0 ;i--){
            System.out.println("Name Of Thread" + t1 + i);
        }   
    }
} // was missing (for closing class mythread)


class t {

    public static void main(String args[]) {

        mythread m1 = new mythread("Child Thread 1");
        mythread m2 = new mythread("Child Thread 2");

        try {

            for(int i = 5 ; i > 0 ;i--) {
                System.out.println("Main Thread" + i);
                Thread.sleep(2000);
            }

        }
        catch(InterruptedException e){

            System.out.println("Main Thread Interrupted");
        }

     }
}
于 2013-07-23T14:13:36.530 回答
0

我们不能在嵌套的内部类中使用静态方法,因为内部类与其外部类的对象隐式关联,因此它不能为自己定义任何静态方法。所以,这里你也删除了 class t //class t {

public static void main(String args[]) {

    mythread m1 = new mythread("Child Thread 1");
    mythread m2 = new mythread("Child Thread 2");

    try {

        for(int i = 5 ; i > 0 ;i--) {
            System.out.println("Main Thread" + i);
            Thread.sleep(2000);
        }

    }
    catch(InterruptedException e){

        System.out.println("Main Thread Interrupted");
    }

 }
于 2021-08-03T06:29:51.087 回答