public interface Expression {
}
public interface ArithmeticExpression extends Expression {
}
public class StaticMethodDemo {
public static void print(Expression e) {
System.out.println("StaticMethodDemo");
}
public static List<Expression> convert(
Collection<? extends Expression> input) {
return null;
}
}
public class StaticMethodChild extends StaticMethodDemo {
public static void print(ArithmeticExpression e) {
System.out.println("StaticMethodChild");
}
public static List<ArithmeticExpression> convert(
Collection<? extends ArithmeticExpression> input) {
return null;
}
}
Mã trên biên dịch trong java 5 nhưng không phải trong java 7 tại sao? Trong java 7 nó cho "Tên xung đột: Phương thức chuyển đổi (Bộ sưu tập) loại StaticMethodChild có cùng xóa như Bộ sưu tập (loại) của loại StaticMethodDemo nhưng không ẩn nó"Lỗi Clash biên dịch tên khi biên dịch trong java 7 nhưng hoạt động tốt trong java 5
Cảm ơn bạn đã giải thích. Hiện tại tôi đang làm việc trên một dự án mà chúng tôi đang chuyển sang Java 7 và số lượng lớn các lớp có vấn đề này. Ngoài việc này tôi cũng phải đối mặt với vấn đề với các phương pháp có vargs. – Dragon
Bạn chắc chắn nên cấu trúc lại tất cả các lớp đó vì đây là một nguồn lỗi. –