Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error - Illegal static declaration in inner class

Tags:

java

What does this mean?

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) {  

My code:

/**
 * 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();
    }  
}
like image 735
user2898828 Avatar asked Oct 20 '13 19:10

user2898828


1 Answers

This is well answered here: Modifier static is only allowed in constant variable declarations

In short: because mymobile is a subclass of Mobile, it cannot have a static member (the main function).

If you can move mymobile class out of Mobile, the error should clear.

like image 138
jantzl Avatar answered Sep 25 '22 07:09

jantzl