Java构造函数使用参数创建新列表

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

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.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);
    }
}