в классе у меня естьОпределить методы Anonimous класса, созданного внутри метода от метода вызывающей
A a = new A(){
stuffhere
};
теперь я обнаружил, что мне нужно, чтобы создать новый А внутри метода и вернуть его, но у меня есть для определения stuffhere из вызывающего класса. Есть ли способ в java для этого? Что-то вроде
A a = createAClass(){
stuffhere
};
public A createAClass()[T]{
return new A(){T};
}
или что-то подобное. Я бы предпочел не использовать интерфейс для перехода к методу create, поскольку мои анонимные классы не только переопределяют методы, но также добавляют атрибуты и новые функции, и я не думаю, что могу передать их с помощью интерфейса.
Любые мысли?
EDIT для -1ers (простой комментарий будет достаточно) с синтаксисом [T], очевидно, неправильно, я имел в виду то, что может передать общий код, скажем, копировать-вставить код.
createAClass()[int a; String b; @override public void mymethod(){dosomethigb;} public void dosomethingelse(){dosomethingelse;}];
будет работать как
public A createAClass(){
return new A()
{
int a;
String b;
@override public void mymethod()
{dosomethigb;}
public void dosomethingelse()
{dosomethingelse;}};
};}
но если я пишу в другой части программы
createAClass()[float c; List d; public void yourmethod(){dosomething2;} @override public void dosomethingelse(){dosomethingelse2;}];
было бы вместо того, чтобы работать, как
public A createAClass(){
return new A()
{
float c;
List d;
public void yourmethod()
{dosomething2;}
@override public void dosomethingelse()
{dosomethingelse2;}
};}
Мое плохое, я выберите плохую возможность сделать экзамен ле, но я подумал, что это самый ясный способ. Может быть, я должен был использовать X вместо T? ..
Короче говоря: Я хочу создать анонимный класс внутри метода, но определить, что делает анонимный класс в вызове метода, а не внутри метода (например, название говорит)
EDIT2: я знаю, что я не могу получить доступ к новым методам из класса, что я делаю сейчас создать анонимный класс, добавьте несколько атрибутов и метод, а затем использовать их в переопределенный метод. Добавленные методы не являются проблемой, так как я могу заставить вызывающего метода передать интерфейс, вызываемый переопределенным методом в создаваемом анонимном классе, проблемами являются атрибуты. Я не знаю, как добавить их в анонимный класс, передавая их из вызывающего метода.
Что такое [T]? Это общий тип? – viktor
То, что вы предоставили, не имеет большого смысла, потому что '[T]' не является допустимым синтаксисом, и мы не можем сказать, что вы подразумеваете под этим. –