از Java SE 10 به بعد، میتوانید از شناسه نوع var برای اعلام متغیر محلی استفاده کنید. با این کار به کامپایلر اجازه میدهید نوع واقعی متغیری را که ایجاد میکنید تعیین کند. پس از ایجاد، این نوع قابل تغییر نیست.
فرض کنید کد زیر را داریم:
String message = "Hello World!";
Path path = Path.of("/home/user/file.txt");
InputStream stream = Files.newInputStream(path);
اعلام صریح انواع سه متغیر message، path و stream در این حالت اضافی است.
با شناسه نوع var کد بالا میتواند اینطور نوشته شود:
var message = "Hello World!";
var path = Path.of("/home/user/file.txt");
var stream = Files.newInputStream(path);
مثال زیر نشان میدهد چگونه میتوانید از شناسه نوع var برای سادهتر کردن خوانایی کد استفاده کنید. در اینجا متغیر strings نوع List<String> و متغیر element نوع String میگیرد:
var strings = List.of("first", "second", "third");
for (var element : strings) {
System.out.println(element);
}
در این مثال، متغیر path از نوع Path و متغیر stream از نوع InputStream است:
var path = Path.of("/home/user/file.txt");
var stream = Files.newInputStream(path);
نکته: در دو مثال قبلی، از
varبرای اعلام متغیر در دستورforو دستورtry-with-resourcesاستفاده کردهاید. این دو دستور بعداً در این آموزش پوشش داده میشوند.
محدودیتهایی در استفاده از شناسه نوع var وجود دارد:
var نمیتواند برای فیلدها یا پارامترهای متد/Constructor استفاده شود.null نوعی ندارد، متغیر باید initializer داشته باشد.با رعایت این محدودیتها، کلاس زیر کامپایل نمیشود چون استفاده از var به عنوان شناسه نوع برای فیلد یا پارامتر متد امکانپذیر نیست:
// این کامپایل نمیشود!
class Person {
var name; // خطا: var برای فیلد مجاز نیست
}
همچنین این کد کامپایل نمیشود چون متغیر greetings initializer ندارد:
// این هم کامپایل نمیشود!
var greetings; // خطا: نوع قابل استنتاج نیست
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/