2014-06-17 22 views
8

Tôi nhầm lẫn rằng phương pháp Signature nào tôi nên sử dụng cho cùng một mục đích? Cả hai đều làm việc tốt cho tôi.Sự khác nhau giữa kiểu Generic và Object trong khai báo phương thức là gì?

1.

public <T, J> T findUniqueByCondition(String tableName, 
             String key, 
             J value, 
             Class<T> targetObject); 

2.

public <T> T findUniqueByCondition(String tableName, 
            String key, 
            Object value, 
            Class<T> targetObject); 

Đó là thực hành tốt nhất để sử dụng từ trên cao? Tôi thực sự bối rối và không thể tìm thấy bất kỳ lợi thế hoặc bất lợi của ai? Có cái gì không? Nếu có, xin giải thích.

Trả lời

12

Giống như không có sự khác biệt, với T bạn đang sử dụng loại hai lần để bạn có lý do để sử dụng nó nhưng đối với J nó chỉ được sử dụng một lần.

Nếu nó thực sự có thể là bất kỳ đối tượng nào và bạn không bao giờ sử dụng loại đó nữa thì không có lý do gì để sử dụng Generics cho nó. Generics cho phép bạn lấy kiểu trả về và các tham số của phương thức và liên kết 2 hoặc nhiều hơn với nhau. Chúng cũng cho phép bạn liên kết với nhau nhiều phương thức khi sử dụng Generics trong một định nghĩa lớp.

Không có trường hợp sử dụng nào áp dụng ở đây.

+4

Tất cả trong tất cả, sự khác biệt là liệu bạn có thể sử dụng suy luận kiểu hay không, khi trình biên dịch nắm bắt loại thực tế. +1. –

+0

Tôi thích tùy chọn đầu tiên và tránh sử dụng Object. – frostbite

+0

Xin chào .. @frostbite, tại sao? –

Các vấn đề liên quan