Here non static Inner class declares static variable. Please explain
Inner classes can have variables which are both final and static at the same time. This is because final static variables are treated as 'constant' values, that never gets changed. In other words, you can declare and use a final static variable in an inner class for the same reason why you can use the primitive value "2", anywhere you want.