2013-06-04 11 views
5

Tôi muốn thêm một số mã tùy chỉnh vào các thực thể greenDAO của mình. Tôi thấy có cái gì đó như khu vực được bảo vệ. Nhưng tôi không thích ý tưởng để kiểm tra trong các lớp học được tạo ra để kho git của tôi. Tôi muốn sử dụng thừa kế cho điều này.Thêm mã tùy chỉnh vào các thực thể greenDAO

tức là tôi có một thực thể User. Vì vậy, tôi muốn greenDAO tạo một lớp có tên là UserBase. Nay tôi muốn mở rộng bởi User và thực hiện một phương pháp như thế này:

public String getFullName() { 
    return this.first + " " + this.last; 
} 

đâu firstlast là tài sản được quản lý.

Nhưng tôi không biết làm cách nào để yêu cầu greenDAO sử dụng lớp User thay vì đối tượng được tạo UserBase. Có cách nào để làm điều này không?

+0

Tại sao bạn không đặt phương thức 'getFullName' trong UserBase? – AMerle

+0

bởi vì sau đó tôi phải kiểm tra các tập tin được tạo ra vào git của tôi. Nhưng phần lớn nhất của lớp được tạo ra và không cần phải được kiểm tra. Bạn không kiểm tra R.java, hoặc không bạn? – keineantwort

+0

không, nhưng tôi thêm các lớp đã tạo của mình. – AMerle

Trả lời

6

Tôi tìm thấy một cách làm thế nào để giải quyết này:

bạn có thể nhập một phụ huynh cho từng đối tượng:

Entity user = schema.addEntity("User"); 
... 
user.setSuperclass("UserBase"); 

Vì vậy, bạn có thể thực hiện UserBase như một lớp trừu tượng.

public abstract class UserBase { 

    public String getFullName() { 
    return getFirst() + " " + getLast(); 
    } 

    public abstract int getFirst(); 
    public abstract int getLast(); 
} 

Điều bất lợi ở đây là bạn phải khai báo các phương thức trừu tượng để truy cập chúng.

+0

Cảm ơn bạn đã đăng bài này! Tôi đã có cùng một vấn đề chính xác và đây là GOLD! Tôi đã đấu tranh để mở rộng Đạo của tôi cũng cho đến khi bạn đăng phương pháp này. – AutoM8R

7

Cách tiếp cận chung là sử dụng "giữ phần" trong các thực thể được tạo. Giữ các phần cho phép thêm thành viên và phương thức trực tiếp vào thực thể được tạo. Kiểm tra tại đây để biết chi tiết: http://greendao-orm.com/documentation/modelling-entities/

+0

"Giữ phần" hoặc trong điều khoản MDD "vùng được bảo vệ" có một số nhược điểm: * bạn phải kiểm tra mã được tạo vào vcs * bạn phải giữ mã sạch. một nơi nào đó phải là chữ ký để giữ phần. Nếu bạn phá vỡ chữ ký này (giống như một sự cố hoặc mã định dạng), bạn sẽ mất mã – keineantwort