Đoạn đầu nhỏ. Tôi đã phát triển java tốt trên 1,4 jdk. Sau khi tôi đã chuyển sang một nền tảng khác, nhưng ở đây tôi đi kèm với vấn đề vì vậy câu hỏi là mạnh mẽ về jdk 1.6 (hoặc cao hơn :)). Tôi có 3 lớp kết hợp, bản chất của khớp nối có liên quan với các phương pháp bản địa. Dưới đây là ví dụ về 3 lớp nàylớp học một phần java
public interface A
{
public void method();
}
final class AOperations
{
static native method(. . .);
}
public class AImpl implements A
{
@Override
public void method(){
AOperations.method(. . .);
}
}
Vì vậy, có giao diện A, được thực hiện theo cách riêng của AOperations và AImpl chỉ gọi phương thức đại diện cho phương pháp gốc. Các mối quan hệ này được tạo tự động. Mọi thứ ok, nhưng tôi đã đứng trước vấn đề. Giao diện đôi khi như A cần phơi bày khả năng lặp. Tôi có thể ảnh hưởng đến giao diện, nhưng không thể thay đổi cài đặt (AImpl).
Nói trong C# tôi có thể có thể vấn đề quyết tâm bởi một phần đơn giản: (mẫu # C)
partial class AImpl{
... //here comes auto generated code
}
partial class AImpl{
... //here comes MY implementation of
... //Iterator
}
Vì vậy, có java tương tự của một phần hoặc một cái gì đó như thế nào.
CHỈNH SỬA: Theo nhận xét của @pgras tôi cần làm rõ một số. AImpl không phải là trong chân không, có một số nhà máy (bản địa thực hiện) mà trả về trường hợp của AImpl, đó là lý do tại sao tạo ra thừa kế từ AImpl, không áp dụng.
EDITED 2: Có thể là nó không liên quan, nhưng làm thế nào nó được thực hiện bởi JUnit 4:
public class SomeTest {
...
//there is no direct inheritance from Assert, but I can use follow:
assertTrue(1==1); //HOW DOES it works??
'assertTrue' là phương pháp tĩnh trong' Assert'. Sẽ có một 'import static org.junit.Assert. *' Hoặc tương tự ở đâu đó. Vì tất cả đều tĩnh, nó sẽ không thực sự hữu ích. – Chris