错误 - 内部类中的非法静态声明

时间:2013-10-20 19:15:50

标签: java

这是什么意思?

Illegal static declaration in inner class Mobile.mymobile
  modifier 'static' is only allowed in constant variable declarations
Line 75,  public static void main(String[] args) {  

我的代码:

/**
 * to write a simple java class Mobile that models a mobile phone.
 * 
 * @author (jamal) 
 * @version (14/10/13)
 */
public class Mobile
{
    // type of phone
    private String phonetype;
    // size of screen in inches
    private int screensize;
    // menory card capacity
    private int  memorycardcapacity;
    // name of present service provider
    private String serviceprovider;
    // type of contract with service provider
    private int typeofcontract;
    // camera resolution in megapixels
    private int cameraresolution;
    // the percentage of charge left on the phone
    private int checkcharge;
    // wether the phone has GPS or not
    private String GPS;
    // instance variables - replace the example below with your own
    private int x;

    // The constructor method

    public Mobile(String mobilephonetype, int mobilescreensize,
        int mobilememorycardcapacity,int mobilecameraresolution,
        String mobileGPS, String newserviceprovider) {
        this.phonetype =  mobilephonetype;
        this.screensize = mobilescreensize;
        this.memorycardcapacity = mobilememorycardcapacity;
        this.cameraresolution = mobilecameraresolution;
        this.GPS = mobileGPS;

        // you do not use this ones during instantiation,you can remove them if you do not need or assign them some  default values 
        //this.serviceprovider = newserviceprovider;
        //this.typeofcontract = 12;
        //this.checkcharge = checkcharge;

        Mobile samsungPhone = new Mobile(
            "Samsung" // String mobilephonetype
        ,   1024      // int mobilescreensize 
        ,   2         // int mobilememorycardcapacity 
        ,   8         // int mobilecameraresolution 
        ,   "GPS"     // String mobileGPS
        ,   "verizon" // String newserviceprovider 
        );

        //typeofcontract = 12;
        //checkcharge = checkcharge;
    }

    // A method to display the state of the object to the screen
    public void displayMobileDetails() {
        System.out.println("phonetype: " + phonetype);
        System.out.println("screensize: " + screensize);
        System.out.println("memorycardcapacity: " + memorycardcapacity);
        System.out.println("cameraresolution: " + cameraresolution);
        System.out.println("GPS: " + GPS);
        System.out.println("serviceprovider: " + serviceprovider);
        System.out.println("typeofcontract: " + typeofcontract);
    }

    /**
     * The mymobile class implements an application that
     * simply displays "new Mobile!" to the standard output.
     */
    public class mymobile {
        public static void main(String[] args) {
            System.out.println("new Mobile!"); //Display the string.
        }
    }

    public static void buildPhones(){
        Mobile Samsung = new Mobile("Samsung", 3, 4, 8, "verizon", "GPS");
        Mobile Blackberry = new Mobile("Blackberry", 3, 4, 8, "verizon", "GPS");   
    }

    public static void main(String[] args) {
        buildPhones();
    }  
}

4 个答案:

答案 0 :(得分:6)

这里的答案很好: Modifier static is only allowed in constant variable declarations

简而言之:因为mymobile是Mobile的子类,所以它不能拥有静态成员(主要功能)。

如果您可以将mymobile类移出Mobile,则应该清除错误。

答案 1 :(得分:0)

静态内部类中不能包含公共和静态字段

请参阅Inner Class Documentation here

答案 2 :(得分:0)

在Java中,无法在一个文件中添加两个公共类。您需要更改mymobile类修饰符默认值class mymobile,或者您可以将Mobile类修饰符更改为默认值{{ {1}}。

答案 3 :(得分:-1)

发生此错误是因为您在一个程序中有两个主要方法。