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

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 یک متد تعریف کنم و در داخل همون کلاس پیاده سازی کنم؟

سوال 1 ماه قبل در تالار کامپیوتر و اینترنت توسط ANONYMOUS (349 امتیاز) 88% درصد پذیرش
ویرایش 1 ماه قبل توسط 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());
    }
}

 

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

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

+2 رأی
1 جواب 272 بازدید
+1 رأی
3 جواب 3,524 بازدید
...