An inner class declared as static is treated as if it were a normal top-level class.
Declaring an inner class static means that class only has access to the "outer" class public and private static fields. A non-static inner class has access to the outer class's instance data. Top-level classes cannot be declared static. The advantage of a static inner class is that it doesn't need an instance of the containing class to work and it's bytecode class size is smaller for that reason - less overhead.
A Static method in Java is one that belongs to a class rather than an object of a class. Normal methods of a class can be invoked only by using an object of the class but a Static method can be invoked Directly. Example: public class A { ..... public static int getAge(){ .... } } public class B { ..... int age = A.getAge(); } In class B when we wanted the age value we directly called the method using the instance of the class instead of instantiating an object of the class. Tip: A static method can access only static variables. The reason is obvious. Something that is common to a class cannot refer to things that are specific to an object...
is given belowpackage com.test.reflection;public class Outer{public static class Nested{public void printMesg(String body){System.out.println(body);}}public class Inner{public void printMesg(String body){System.out.println(body);}}}package com.test.reflection;import com.test.reflection.Outer.Nested;public class AnotherClass {public static void main(String[] args){try {//Bar b=(Bar) Foo.Bar.class.getConstructors()[0].newInstance(new Foo());//b.printMesg("hello");Nested nested=new Nested();nested.printMesg("nested class");Outer.Inner inner=new Outer().new Inner();inner.printMesg("Inner class");//b1.printMesg("static");} catch (IllegalArgumentException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (SecurityException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}
Static Blocks are always executed first. A static block is executed when your class is charged but a static method is executed only when is called, therefor first the class is charged and then is executed a method.
Static java method is the same as a static variable. They belong to a class and not an object of that class. If a method needs to be in a class, but not tied to an object, then one uses static java.
Declaring an inner class static means that class only has access to the "outer" class public and private static fields. A non-static inner class has access to the outer class's instance data. Top-level classes cannot be declared static. The advantage of a static inner class is that it doesn't need an instance of the containing class to work and it's bytecode class size is smaller for that reason - less overhead.
A static class may or may not have static members. Adding the static keyword to the class definition won't change this. Note that an inner class which is not static may not contain static members (unless those members are also declared final).
A Static method in Java is one that belongs to a class rather than an object of a class. Normal methods of a class can be invoked only by using an object of the class but a Static method can be invoked Directly. Example: public class A { ..... public static int getAge(){ .... } } public class B { ..... int age = A.getAge(); } In class B when we wanted the age value we directly called the method using the instance of the class instead of instantiating an object of the class. Tip: A static method can access only static variables. The reason is obvious. Something that is common to a class cannot refer to things that are specific to an object...
An inner class is a class within a class: class MyClass { class MyInnerClass { } } Inner classes in Java are normally used for things like the nodes of a linked list.
A static class is a class where all the members are declared static.
A toplevel class certainly can be static. Static has nothing to do with the level of a class.
While not very common an interface in Java can contain a class. Most interface definitions strictly provide an interface and don't include inner classes.An example is the java.text.AttributedCharacterIteratorinterface found in the J2SE API which includes a public static inner class Attribute. The inner class is accessed externally as AttributedCharacterIterator.Attribute.
is given belowpackage com.test.reflection;public class Outer{public static class Nested{public void printMesg(String body){System.out.println(body);}}public class Inner{public void printMesg(String body){System.out.println(body);}}}package com.test.reflection;import com.test.reflection.Outer.Nested;public class AnotherClass {public static void main(String[] args){try {//Bar b=(Bar) Foo.Bar.class.getConstructors()[0].newInstance(new Foo());//b.printMesg("hello");Nested nested=new Nested();nested.printMesg("nested class");Outer.Inner inner=new Outer().new Inner();inner.printMesg("Inner class");//b1.printMesg("static");} catch (IllegalArgumentException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (SecurityException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}
by creating class as an static class
A static member variable is local to the class rather than to an object of the class.
Anything that is declared static means that it is associated with the class rather than the object. There are three times you will use the static keyword:With a field: An instance variable declared static will be common to every instance of the class made (in other words, with the class itself). Here's an example: class A{static int k = 0;public A() {k++};}...A one = new A();System.out.println(one.k); //1A two = new A();System.out.println(two.k); //2two.k+=5;System.out.println(one.k); //7You can see that both instances of A are referencing the same variable k. Since k is associated with the class rather than any object, the variable could also have been accessed via A.k. This is the practical purpose of all static members.With a method: Just like fields, methods that are static can be accessed by calling A.[method]. Consider the Math class - you do not have to create an instance of Math, pass in a number, and call .sqrt(). You just call Math.sqrt().With an inner class: Inner classes that are static (outer classes cannot be made static) act just like any other static member. They do not offer any unique functionality besides not being able to interact directly with instance members of their outer class. As Sun puts it, "In effect, a static nested class is behaviorally a top-level class that has been nested in another top-level class for packaging convenience."
Static java method is the same as a static variable. They belong to a class and not an object of that class. If a method needs to be in a class, but not tied to an object, then one uses static java.