کلاس های محلی (Local Classes)

کلاس های محلی در جاوا شبیه به کلاس های داخلی غیر استاتیک (inner class) هستند. این نوع کلاس ها در داخل یک متد یا محدوده ({…}) در داخل متد تعریف می شوند. به مثال زیر توجه کنید :

class Outer 
{
    public void printText() 
    {
        class Local 
        { 

        }

        Local local = new Local();
    }
}

کلاس های محلی تنها در داخل متد و یا بلوکی که در آن تعریف شده اند قابل دسترسی هستند. این کلاس ها همانند کلاس های غیر استاتیک می توانند به فیلدها و متدهای کلاسی که در داخل آن قرار دارند دسترسی داشته باشند.
از نسخه 8 جاوا این کلاس ها می توانند به متغیرهای محلی و پارامترهای متدی که در آن تعریف شده اند دسترسی داشته باشند. پارامترها باید به صورت final تعریف شده باشند. کلاس های محلی می توانند در داخل متدهای استاتیک تعریف شوند که در این صورت فقط به قسمت های استاتیک کلاسی که در آن تعریف شده اند دسترسی خواهند داشت. این کلاس ها نمی توانند دارای انواع استاتیک باشند (می توانند شامل ثابت ها باشند و متغیرهای آنها به صورت static final تعریف می شوند)، چون کلاس های محلی در حالت عادی غیر استاتیک هستند حتی اگر در داخل متد استاتیک تعریف شوند.