Java构造函数使用参数创建新列表
Java新手。我试图创建一个类,将其转换为JSON字符串,并使用GSON作为POST请求发送。此类是在名为Java构造函数使用参数创建新列表,java,constructor,Java,Constructor,Java新手。我试图创建一个类,将其转换为JSON字符串,并使用GSON作为POST请求发送。此类是在名为BertClient的公共类中创建的: private class BertJsonRequest { private Integer id; private List<String> texts; public BertJsonRequest(int x, String text) { this.id = x; this
BertClient
的公共类中创建的:
private class BertJsonRequest {
private Integer id;
private List<String> texts;
public BertJsonRequest(int x, String text) {
this.id = x;
this.texts = new ArrayList<>();
this.texts.add(text);
}
}
对于我正在创建的新BertJsonRequest
行,我的IDE告诉我BertClient.this不能从静态内容引用
我不知道那是什么意思。
我是否正确构建了构造函数?
我想我不是。我只希望能够传入一个字符串,以便构造函数可以使用该字符串创建一个字符串列表。您的类访问修饰符设置为private。尝试将访问修饰符改为公共
public class BertJsonRequest {
private Integer id;
private List<String> texts = new ArrayList<>();
public BertJsonRequest(int x, String text) {
id = x;
texts.add(text);
}
}
公共类BertJsonRequest{
私有整数id;
私有列表文本=新的ArrayList();
公共请求(int x,字符串文本){
id=x;
文本。添加(文本);
}
}
我猜您的BertJsonRequest
是BertClient
的一个内部类。您不能在BertClient
之外实例化BertJsonRequest
。您可以将BertJsonRequest
类设置为静态,这样才能工作。通过阅读您对他人答案的评论,我了解到,您的BertClientRequest
可能是一个内部类。如果它确实是一个内部类,并且您尝试在包含类的静态方法中调用它,那么很明显,您无法实例化内部类,因为该内部类不是静态的
公共类客户端{
私有类BertClientRequest{
/*一些代码*/
}
静态空洞无定向方法(){
// ...
//静态方法不知道内部类BertClientRequest,因为它不是静态的,
//因此会给您一个编译时错误
BertClientRequest rawRequest=新的BertClientRequest(1,文本);
// ...
}
}
在这种情况下,修复方法是将内部类更改为static
:私有静态类BertClientRequest
我已更改为Public,但错误仍然存在。我认为私有修饰符不会成为问题,因为私有类位于BertClient类内部。是吗?您可以尝试删除this关键字,并可以在构造函数外部初始化文本数组。我将编辑我的答案,以反映刚才仍然尝试了相同的方式。您介意在帖子中发布完整的文件和完整的错误吗?我怀疑您的客户端是静态的,或者您在某处使用了一些静态关键字。问题是BertJsonRequest位于静态上下文下的某个位置,因此,它不可用。你能添加完整的文件以便我们能更好地帮助你吗?是的,我发现了问题。BertJsonRequest rawRequestBody=新的BertJsonRequest(1,文本);这条线是用静态法测得的。然后,根据IDE的建议,我将BertJsonRequest更改为静态类。但我不完全理解。
public class BertJsonRequest {
private Integer id;
private List<String> texts = new ArrayList<>();
public BertJsonRequest(int x, String text) {
id = x;
texts.add(text);
}
}