2013-05-10 31 views
11

Tôi đang cố gắng sử dụng các mô hình xây dựng với Generics nhưng tôi không biết làm thế nào để đặt nó lại với nhau. Tôi sẽ cần một số trợ giúp và giải thích về cú pháp chính xác. Mã của tôi và những gì tôi đã thử.Làm thế nào để sử dụng Generics trong mô hình xây dựng

public class LanguageMatcher<T, S> { 

    // Code 
    public final static class Builder<T, S> { 

     // Code 
    } 
} 

Usage (Error): 

new LanguageMatcher<MyClass, YourClass>().Builder<MyClass, YourClass>().... 
+0

thử này một: 'mới LanguageMatcher.Builder ();' – hoaz

+3

Hài hước để nhận một downvote về một câu hỏi như thế này. – LuckyLuke

+1

@ LuckyLuke thậm chí không SO là an toàn từ trolls:/ – A4L

Trả lời

10

Thông số loại không được kế thừa từ lớp ngoài vào lớp lồng nhau tĩnh. Vì vậy, Builder<T, S> thực sự có một số khác nhau TS hơn LanguageMatcher.

Vì vậy, bạn không cần tham số loại khi cố gắng đủ điều kiện Builder với LanguageMatcher. Và bởi vì lớp Builderstatic, bạn không cần một thể hiện của LanguageMatcher để nhanh chóng một Builder:

LanguageMatcher.Builder<MyClass, YourClass> lm = 
    new LanguageMatcher.Builder<MyClass, YourClass>(); 
+0

Ah, tốt đẹp. Cảm ơn bạn :) – LuckyLuke

+0

Một điều mặc dù: Lớp LanguageMatcher là chung vì nó thực hiện một giao diện chung (không hiển thị mã trước đó). Tôi có cần phải giải quyết nó theo cách đặc biệt không? Ý tôi là, T và S có bao giờ được đặt trên LanguageMatcher khi tôi chuyển đối tượng trình xây dựng tới hàm tạo riêng không? – LuckyLuke

+0

Trong hàm tạo riêng của bạn, bạn có thể lấy tham số là 'Builder '. Bằng cách đó, bạn có thể tạo một 'LanguageMatcher ' với một 'Builder '. Trình biên dịch Java sẽ suy ra các tham số kiểu generic từ các tham số kiểu generic của đối tượng 'Builder'. – rgettman

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