java - 如何在没有主功能的情况下将数据正确插入 vec.get(0)?
问题描述
class Instruction{
Buffer buf = new Buffer();
Vector<Buffer> vec = new Vector<Buffer>();
vec.add(buf); <--error
...
}
class Buffer{
String name = new String( "Buffer-" );
Vector<String> word = new Vector<String>();
public Buffer(){
name = new String( "Buffer-" );
word = new Vector<String>();
} // public
}
error: <identifier> expected
我想buf
插入vec.get(0);
但是,它有一个问题。
我该如何解决?
我不知道发生了什么事。这不应该是错误的。
解决方案
好的,显然答案是add
必须从方法调用函数,可能是构造函数:
class Instruction {
Buffer buf = new Buffer();
Vector<Buffer> vec = new Vector<Buffer>();
public Instruction() {
vec.add(buf);
}
}
但是还有一种不使用构造函数的有趣方式:
class Instruction {
Buffer buf = new Buffer();
Vector<Buffer> vec = new Vector<Buffer>() {{
add(buf);
}};
}
这是“双括号初始化”,稍微滥用 Java 语法,但确实有效。外面的大括号集引入了一个匿名子类Vector<Buffer>
。内大括号是该子类的初始化块。
vec
您还可以使用您为此目的创建的另一个集合进行初始化:
class Instruction {
Buffer buf = new Buffer();
Vector<Buffer> vec = new Vector<Buffer>(Collections.singleton(buf));
}
推荐阅读
- python - 我可以使用 __init__.py 使导入在全球范围内可用吗?
- kubernetes - 为 k8s etcd pod 配置 pod 资源请求
- c# - 如何使用自动映射器更新实体框架中的数据?
- ldap - 如果我们可以使用 ldaps,为什么要使用 NTLM/kerberos
- javascript - react native - 将数组值转换为与 SELECT IN 子句兼容的字符串
- c++ - 打印带有一个错位字符串的字符串序列
- java - 如果其中一列是使用准备好的语句自动递增,如何在 mysql 数据库中插入值
- mysql - MySQL访问被拒绝授予管理员用户的所有权限
- or-tools - or-tools 不遵守约束
- python - GCP Stackdriver 自定义代码