30/09/2018, 19:02

Static Factory Method và Instance Initializer Block?

Chào mọi người, mình muốn hỏi về 2 vấn đề này của Java:

  1. Static Factory Method là gì? Cách sử dụng và khi nào cần sử dụng? (Mình đã hỏi câu hỏi này trước đây nhưng không có ai trả lời).
  2. Mình được biết Instance Initializer Block là một khối lệnh được thực thi ngay sau khi gọi constructor, còn Static Initializer Block chỉ thực thi 1 lần duy nhất khi class được định nghĩa. Vậy thì công dụng của 2 thằng này là gì?
    Xin cám ơn.
Nguyen Ca viết 21:16 ngày 30/09/2018

Khi người người ta đề cập đến Factory Method thì em hiểu là chức năng method đó là khởi tạo đôi tượng nhé. Còn static hay non-static thì tùy yêu cầu nhé
Anh không biết em có hiểu về static hay chưa.

Static Initializer Block

Được thực thi khi class được load ,đối với biến/method static nó được lưu trong common memory và được share cho toàn bộ instances của class. Như vậy khi giá trị bien/method bị thay đổi thì các instances của class sẽ nhận được thay đổi đó.

[quote=“huyvo, post:1, topic:17964”]
Instance Initializer Block là một khối lệnh được thực thi ngay sau khi gọi constructor
[/quote] chính xác là sau phần gọi tới supper class(nếu có),và nó chị gây ảnh hưởng trên từng instances.
Cả Instance Initializer Block và Static Initializer Block điều là để khởi tạo các giá tri ban đâu, khác ở thời điểm được tạo và tầm ảnh hưởng.

huy vo viết 21:13 ngày 30/09/2018

Vậy anh có thể giải thích cho em về static factory method được không, cụ thể như sau:

public class People {
        private int name;

        private People(String name) {
                this.name = name;
        }

        public static People make(String name) {
                return new People(name);
        }
}

public class Test {
        public static void main(String[] args) {
                People a = People.make("Huy");
        }
}

Dù gì thì vẫn phải new đối tượng ra, vậy ý nghĩa của nó là gì?

Nguyen Ca viết 21:11 ngày 30/09/2018

Khác là khi em viết như của em, em chỉ cho phép khởi tạo đối tượng bên trong class của em, Bên ngoài ko được phép.

huy vo viết 21:05 ngày 30/09/2018

Hihi, em vẫn chưa hiểu lắm. Khi anh gọi phương thức make của People thì nó cũng tạo ra đối tượng mà, em không hiểu tạo đối tượng bên ngoài class và bên trong class khác nhau như thế nào và đối tượng đó được hủy khi nào…

Bài liên quan
0