چگونگی مقداردهی فیلد های یک کلاس در جاوا

0 رأی

سلام. لطفا به کد زیر دقت کنید:

import java.util.HashMap;
import java.util.Map;

class Person {
    Map<Integer, String> map = new HashMap<>();
}

public class MainClass {

    public static void main(String[] args) {
        Person p = new Person();
        p.map.put(13951, "Java");
        p.map.put(13951, "Python");
        p.map.put(13951, "PHP");
    }
}

همانطور که مشاهده می‌کنید، من Map و در کلاسی با نام Person تعریف کردم و سپس مقدار دهی Map و در کلاس اصلی و در متد main انجام دادم. سوال من اینه که بهتره مقداردهی Map و در کدام کلاس بنویسیم؟ یعنی مثل الان خوبه یا اینکه در کلاس Person یک متد تعریف کنم و در داخل همون کلاس پیاده سازی کنم؟

سوال 6 ماه قبل در تالار کامپیوتر و اینترنت توسط Sina Deuxshiri (414 امتیاز) 85% درصد پذیرش
ویرایش 6 ماه قبل توسط Saeed Zarinfam

1 جواب

+3 رأی
 
بهترین جواب

برای مثال شما کد زیر بهتره

 

public class Person 
{
    //use new HashMap cuz null is bad
    private final Map<Integer, String> map = new HashMap<>();

    public void addToMap(Integer key, String value)
    {
	map.put(key, value);
    }

    public Map<Integer, String> getMap()
    {
      //this should be immutable, don't change state of object externally
      return Collections.unmodifiableMap(map);
    }
}

public class MainClass {
    public static void main(String[] args) {
        Person p = new Person();
        p.addToMap(13951, "Java");
        p.addToMap(13951, "Python");
	//
        Map<Integer, String> map = new HashMap<>(p.getMap());
    }
}

 

جواب 6 ماه قبل توسط jedlab (235 امتیاز)
ویرایش 6 ماه قبل توسط jedlab

سوال های مشابه

0 رأی
2 جواب 114 بازدید
+2 رأی
1 جواب 316 بازدید
...