Eclipse 3.4. Java derleyici düzeyi 1.6 JRE IBM 1.6Javac'ta muğlak Constructor referansı, ancak Eclipse'de değil
Formun değiştirilemediği bir kitaplık sınıfımız var.
import java.util.Hashtable;
public class A extends Hashtable {
...
}
Ve biz başka bir sınıftan kurucular birini aramaya çalıştığınızda sorun oluşur A.
public class B {
private A a;
public B() {
this.a = new A();
}
public B(final A props) {
this.a = props;
}
public B(final Map<String, String> props) {
this();
for (String key : props.keySet()) {
add(key, props.get(key));
}
}
@SuppressWarnings("unchecked")
public B add(final String name, final Object value) {
a.put(name, value);
return this;
}
}
kolay erişim sağlamak için bir yardımcı sınıf inşa var.
public class C {
public void stuff() {
A a = new A();
B b = new B(a);//Error in javac
}
}
Eclipse hatasız bu listeler ve bu karınca javactır yoluyla derlenmiş ve jenkins zaman derleyici aşağıdaki gibi bir hata verir.
reference to B is ambiguous, both method B(com.foo.A) in com.bar.B and method B(java.util.Map<java.lang.String,java.lang.String>) in com.bar.B match
[javac] B b = new B(a);
Bu hata javac'ta meydana gelir mi? Benim görüşüme göre daha spesifik bir yöntemi seçmek için tutulma doğrudur. HashTable Harita uygulayan yana
java'da olduğu gibi Eclipse ile aynı JDK'yı kullandığınızdan emin misiniz? – dbalakirev
A, 'HashTable'ı genişletiyor. Bu 'Hashtable' olmalı? –
@David düzeltildi -> Düzenlendi –