Вот есть фрагмет кода, он компилируется и так и так, разницы никакой, так как же правильно и в чем разница? По идее правильный второй вариант, вот даже ссылка на хабр https://habrahabr.ru/post/342090/, почему же тогда первый тоже компилируется и прекрасно работает, кто знает объясните в чем разница?
import java.util.ArrayList;

public class Solution {
    public static void main(String[] args) {
        //Объект вложенного класса можно создать и так
        Human human1 = new Human();
        // И вот так, разницы никакой
        Solution.Human human2 = new Solution.Human();
    }

    public static class Human {
    }

}