Vâng, sự khác biệt là nếu bạn cố gắng làm cho mỗi phương pháp trong lớp của bạn chung chung loại chung bạn muốn sử dụng trong câu nói đầu tiên của bạnGenericMethod có thể hoặc có thể không phải là cùng một loại. Ý tôi là gì.
public <T> void firstGenMethod(...){
}
public <T> void secondGenMethod(...){
}
Test:
SomeClass ref = new SomeClass();
ref.firstGenMethod("string");
ref.secondGenMethod(123);//legal as this generic type is not related to the generic type which is used by firstGenMethod
Trong trường hợp trên không có gaurentee rằng cả hai phương pháp có type.It chung cùng phụ thuộc vào cách bạn gọi họ. Nếu bạn làm cho lớp chung mặc dù, kiểu được áp dụng cho tất cả các phương thức bên trong lớp đó.
class Test<T>{
public void firstGenMethod(T t){
}
public void secondGenMethod(T t){
}
}
Test:
Test<String> testingString = new Test<>();
testingString.firstGenMethod("abc");
testingString.firstGenMethod(123);// invalid as your Test class only expects String in this case
Bạn thường muốn làm cho lớp học của bạn chung chung nơi bạn muốn toàn bộ hành vi (phương pháp) của lớp đó để xử lý trên cùng loại. ví dụ tốt nhất là lớp học trong Khung thu thập Java
Vì vậy, bạn có thể có các biến trong lớp của một loại chung? – Dukeling
Một phương pháp là một thành viên và nó có thể là chung chung mà không làm cho toàn bộ lớp chung chung. Điều duy nhất tôi có thể nghĩ đến là có thể tạo ra các biến mẫu chung chung – user1420042
Tôi nghĩ rằng điều này không nên được downvoted mà không có lời giải thích. Trong khi hầu hết chúng ta sử dụng Java trong một khoảng thời gian có thể nghĩ điều này là hiển nhiên, có những người ngoài kia mới bắt đầu học, và tôi nghĩ đây là một câu hỏi hợp lệ. – Axel