Error - Invalid static declaration in inner class

What does it 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 is:

 /** * 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(); } } 
+6
source share
3 answers

Well said here: static modifier is allowed only in declarations with constant variable

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

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

+4
source

You cannot have open and static fields inside a static inner class

See Inner Class Documentation here

0
source

In Java, it is not possible to add two public classes to a single file. You need to change the default class mymobile , for example class mymobile , or you can change the default class Mobile , for example class Mobile .

0
source

Source: https://habr.com/ru/post/956363/


All Articles