Sobes.tech
Junior

როგორ გადაეცემა პარამეტრები Java-ს მეთოდებში?

sobes.tech AI

პასუხი AI-სგან

Java-ში პარამეტრები მეთოდებში მნიშვნელობით გადაეცემა (pass-by-value).

პრიმიტიული ტიპები:

  • გადაეცემა მნიშვნელობის კოპია. მეთოდის შიგნით პარამეტრის შეცვლა არ ახდენს მის გარეთ არსებულ ცვლადზე გავლენას.
// მაგალითი პრიმიტიული ტიპისთვის
public void changeValue(int x) {
    x = x + 10; // შეცვლილია x-ის კოპია მეთოდის შიგნით
}

// გამოყენება:
int original = 5;
changeValue(original);
// original დარჩება 5

ობიექტები (საკავშირო ტიპები):

  • გადაეცემა ლინკის კოპია. ორივე ლინკი (მთავარი და მეთოდის პარამეტრი) მიუთითებს ერთსა და იმავე ობიექტზე მეხსიერებაში.
  • ობიექტის მდგომარეობის შეცვლა (მაგალითად, სეტტერის გამოძახება, ველების შეცვლა) გადაცემული ლინკის საშუალებით აისახება თავდაპირველ ობიექტზე.
  • პარამეტრის გადაყვანა ახალ ობიექტზე მეთოდის შიგნით არ შეცვლის თავდაპირველ ლინკს.
// მაგალითი საკავშირო ტიპისთვის (ობიექტი)
public class MyObject {
    private int value;

    public MyObject(int value) {
        this.value = value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

public void modifyObject(MyObject obj) {
    obj.setValue(100); // შეცვლილია ობიექტის მდგომარეობა
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // პარამეტრი obj ახლა მიუთითებს ახალ ობიექტზე, თავდაპირველი ლინკი არ იცვლება
}

// გამოყენება:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject-ის მნიშვნელობა ახლა 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject კვლავ მიუთითებს თავდაპირველ ობიექტზე, რომლის მნიშვნელობა 50

მოკლედ: ლინკის მნიშვნელობა (მისი მისამართი) გადაეცემა, არა თვით ობიექტი. ეს ქმნის შესაძლებლობას ობიექტის შეცვლის ლინკის საშუალებით, მაგრამ არა თავდაპირველი ლინკის სხვა ობიექტზე გადაყვანას.