Неоднозначная ссылка на конструктор в Javac, но не в EclipseJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Неоднозначная ссылка на конструктор в Javac, но не в Eclipse

Сообщение Anonymous »

Eclipse 3.4.
Уровень компилятора Java 1.6
JRE IBM 1.6

У нас есть класс библиотеки, который мы не можем изменить, который имеет форму .

Код: Выделить всё

import java.util.Hashtable;
public class A extends Hashtable {
...
}
И мы создали служебный класс, обеспечивающий легкий доступ к 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 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;
}
}
Проблема возникает, когда мы пытаемся вызвать один из конструкторов из другого класса.

Код: Выделить всё

public class C {

public void stuff() {
A a = new A();
B b = new B(a);//Error in javac
}
}
Eclipse компилирует это без ошибок, а когда он компилируется с помощью ant javac и jenkins, компилятор выдает ошибку, подобную следующей.

Код: Выделить всё

reference to B is ambiguous, both method B(com.foo.A) in com.bar.B and method B(java.util.Map) in com.bar.B match
[javac]         B b = new B(a);
Должна ли эта ошибка произойти в javac? На мой взгляд, затмение правильно выбирает более конкретный метод.

Подробнее здесь: https://stackoverflow.com/questions/125 ... in-eclipse
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»