2013-03-20 5 views
0

Я довольно новичок в Java, и я прихожу к нему с фона на C++. Я работаю с классом, который должен быть расширен до того, как будет вызван защищенный конструктор. Мне нужен только класс в одном экземпляре. Есть ли способ, которым я могу динамически создавать класс И создавать его одновременно?Как динамически создавать класс и создавать его на Java?

Я нашел похожие сообщения, но не совсем попал в цель. У меня есть следующий код в качестве примера, но, конечно, он синтаксически неверен.

final ffd.tokens.CountryTokens cToken = new class USA extends ffd.tokens.CountryTokens 
{ 
    USA (String value) 
    { 
     super(value); 
    } 
} ("USA"); 
+2

Это может помочь: http://stackoverflow.com/questions/8913406/java-inline-class-definition – Jon

ответ

1

Нечто подобное?

final ffd.tokens.CountryTokens cToken = new ffd.tokens.CountryTokens("someValue") 
{ 
// override something 
}; 

Исправления:

Даже с защищенными методами вы можете создать Builder, который расширит ffd.tokens.CountryTokens

public abstract class CountryBuilder extends ffd.tokens.CountryTokens { 
    public CountryBuilder() { super("useless-data"); }  
    public abstract ffd.tokens.CountryTokens build (String val); 
} 

Используя (довольно сумасшедший да?):

CountryBuilder builder = new CountryBuilder(){ 
    @Override 
    public ffd.tokens.CountryTokens build(String val) { 
     return new ffd.tokens.CountryTokens(val) {}; 
    } 
}; 

builder.build("USA"); 
builder.build("Canada"); 

Я думаю, вы получаете идею.

+0

Проблема заключается в том, что защитник CountryTokens защищен. – jiveturkey

+0

Это довольно круто, и я продолжаю забывать об этом шаблоне. Но я просто надеялся, что есть однострочное решение. Спасибо за весь большой вклад. – jiveturkey

0

Я думаю, что получил. Я всегда думаю динамическое распределение с Java, но если я просто создаю локальный экземпляр, я сделал это таким образом.

class USA extends ffd.tokens.CountryTokens 
{ 

    public USA() { super("USA"); } 

} USA country; 

Теперь у меня есть локальная переменная country типа USA.

Смежные вопросы