У меня есть кнопка, и я хотел бы сделать что-то вроде этого:добавив новую переменную без расширения класса
Button b=new Button(){public int a;};
b.a=5;
Как это сделать в Java?
У меня есть кнопка, и я хотел бы сделать что-то вроде этого:добавив новую переменную без расширения класса
Button b=new Button(){public int a;};
b.a=5;
Как это сделать в Java?
Невозможно добавить переменные в класс без его расширения. Тем не менее, расширение класса не нужно называть: вместо этого вы можете использовать анонимный класс, аналогично фрагменту из вашего сообщения.
Хитрость, однако, чтобы получить доступ к переменной после того, как вы добавили его: вы могли бы сделать это мутирует объекты, на которые ссылается из класса, как это:
// Prepare a mutable object for use in your class
final AtomicInteger a = new AtomicInteger(123);
Button b = new Button(){
public void someMethod() {
...
int n = a.intValue();
...
}
};
Когда вы устанавливаете вещи таким образом, изменения в состоянии a
в вашем методе станут доступными для someMethod()
анонимного подкласса класса Button
.
Без расширения класса? Сожалею. Вы делаете расширяющийся класс. Привыкай к этому.
public class OneAtButton extends Button {
public int aWellNamedClassMemberVariable;
OneAtButton() { // constructor
aWellNamedClassMemberVariable = 5;
}
} // class OneAtButton
Похоже, вы хотите, чтобы пользовательский объект Button
.
Просто создайте новый класс с расширениями Button
и объявите в этом классе переменную a
и любые другие методы, которые вы хотите добавить.
Что-то вроде
public class SomeClass extends Button
{
public int a;
}
public class SomeOtherClass
{
public static void main(String args[])
{
SomeClass someClass = new SomeClass();
someClass.a = 5;
}
}
Если на самом деле вы не хотите, чтобы расширить класс, то это невозможно. Сожалею.
Кроме того, ваш пример фактически создает анонимный класс, который расширяет Button
.
бинго. Бонусные баллы, если вы добавите строку вызова образца – sova
Вы не можете создать новую переменную для класса в той же строке, в которой вы создаете новый объект этого класса. Если вы хотите добавить новую переменную в класс кнопок, который у вас есть, измените класс, чтобы включить новую переменную, или создайте расширение класса, как говорит Жан-Франсуа Савард.
Вы расширяете класс там. Кроме того, вы не можете. –
Да ладно, должен быть путь. – oneat
Есть способ, но не там. – Alan