我对Java很新,我从C ++背景来看它。我正在使用一个必须在调用受保护的构造函数之前进行扩展的类。我只需要一个实例中的类。有没有办法可以动态创建类并同时实例化它?
我发现了类似的帖子,但没有达到标记。我有以下代码作为示例,但当然它在语法上是不正确的。
final ffd.tokens.CountryTokens cToken = new class USA extends ffd.tokens.CountryTokens
{
USA (String value)
{
super(value);
}
} ("USA");
答案 0 :(得分:1)
这样的东西?
final ffd.tokens.CountryTokens cToken = new ffd.tokens.CountryTokens("someValue")
{
// override something
};
更正:
即使使用受保护的方法,您也可以创建一个扩展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");
我想你明白了。
答案 1 :(得分:0)
我想我明白了。我一直在想用Java进行动态分配,但如果我只是创建一个本地实例,我就是这样做的。
class USA extends ffd.tokens.CountryTokens
{
public USA() { super("USA"); }
} USA country;
现在我的country
类型的本地变量USA
。