Ну, возможно, это - глупый вопрос, но я не могу разрешить эту проблему.
В моем ServiceBrowser
класс у меня есть эта строка:
ServiceResolver serviceResolver = new ServiceResolver(ifIndex, serviceName, regType, domain);
И компилятор жалуется на это. Это говорит:
cannot find symbol
symbol : constructor ServiceResolver(int,java.lang.String,java.lang.String,java.lang.String)
Это странно, потому что у меня действительно есть конструктор в ServiceResolver:
public void ServiceResolver(int ifIndex, String serviceName, String regType, String domain) {
this.ifIndex = ifIndex;
this.serviceName = serviceName;
this.regType = regType;
this.domain = domain;
}
ДОБАВЛЕННЫЙ: Я удалил void
от конструктора и это работает! Почему?
удалить void из сигнатуры
public ServiceResolver(int ifIndex, String serviceName, String regType, String domain) {
this.ifIndex = ifIndex;
this.serviceName = serviceName;
this.regType = regType;
this.domain = domain;
}
Это не конструктор ... это простой метод, который ничего не возвращает. Абсолютно ничего!
Должно быть следующее:
public ServiceResolver(int ifIndex, String serviceName, String regType, String domain) {
this.ifIndex = ifIndex;
this.serviceName = serviceName;
this.regType = regType;
this.domain = domain;
}
Конструкторы Java не имеют возвращаемых типов в своей сигнатуре - они неявно возвращают экземпляр класса.
Добро пожаловать на ошибку, которую каждый однажды совершает. Как указывает Роман, вы должны удалить «void» перед конструктором.
Конструкторы не объявляют возвращаемый тип - что может показаться странным, поскольку вы делаете такие вещи, как x = new X (); но вы можете рассматривать это так:
// what you write...
public class X
{
public X(int a)
{
}
}
x = new X(7);
// what the compiler does - well sort of... good enough for our purposes.
public class X
{
// special name that the compiler creates for the constructor
public void <init>(int a)
{
}
}
// this next line just allocates the memory
x = new X();
// this line is the constructor
x.<init>(7);
Хороший набор инструментов для поиска такого рода ошибок (и многих других):
Таким образом, когда вы делать другие распространенные ошибки (вы будете, мы все делаем :-), вы не будете так долго крутить колеса в поисках решения.