Я только начал с Java снова смотрел в Nested Classes
тему, и опробовать некоторые вещи, когда вдруг это случилось:Java - Instance в состоянии получить доступ к статическому методу
class Encloser
{
static int i;
static void m1()
{
System.out.println(i);
}
static void m2()
{
Enclosee.accessEncloser();
}
static class Enclosee
{
static void accessEncloser()
{
i = 1;
m1();
}
static void accessEncloserNew()
{
m2();
}
}
}
class EncloserTest
{
public static void main(String[] args)
{
Encloser ee = new Encloser();
Encloser.Enclosee e = new Encloser.Enclosee();
ee.m1();
ee.m2();
e.accessEncloser();
e.accessEncloserNew();Encloser.m1();
Encloser.m2();
Encloser.m1();
Encloser.Enclosee.accessEncloserNew();
Encloser.Enclosee.accessEncloser();
}
}
Запуск выше код Безразлично 't дать любую ошибку/исключение. Он просто бежит. Здесь возникает путаница, как здесь можно назвать здесь Static Methods
? Не Static Methods
как Class Methods
в Ruby
?
Любое объяснений будут оценены :)
Спасибо за подсказку repliy @marcin_j :) Но просто FYI, я не получил никаких предупреждений: | –
Возможно, это зависит от компилятора ide/java/используемых параметров, я вставил ваш код в http://rextester.com/runcode. – marcinj