无法从静态上下文引用java Gson非静态变量
在这之后,我遇到了一个问题。这是我试图解析的JSON:
{
"origin": "XX.XX.XXX.XXX"
}
以下是我的三个主要课程的重要部分:
DDNS。爪哇
public static void main(String[] args) throws Exception {
Net.returnIp();
System.out.println(Data.origin);
}
网。爪哇
static void returnIp() throws UnsupportedEncodingException, MalformedURLException, IOException {
//Ommited code, all it does is do a GET request to get response
String responseString = new Scanner(response,"UTF-8").useDelimiter("\\A").next();
Data data = new Gson().fromJson(responseString, Data.class);
}
数据。爪哇
public class Data {
public String origin;
@Override
public String toString() {
return String.format("ip:%s", origin);
}
}
除非我忽略了答案中的某些内容,否则我不完全确定自己做错了什么,尽管我有一个大致的想法。有人能解释一下为什么会这样吗?谢谢
# 1 楼答案
问题是,您试图在主方法中访问
Data
的非静态成员,而实际上没有对Data
对象的引用我能想到的解决这个问题的最简单方法是更改
Net#returnIp()
以返回它在解析json时创建的Data
:然后可以使用您创建的
Data
对象:对象和类的概念是Java语言的基础。你需要理解他们才能走得更远
我建议阅读甲骨文的Object-Oriented Programming Concepts,从“什么是对象?”“什么是课堂?”链接