【发布时间】:2023-04-06 06:20:02
【问题描述】:
我知道标题没有说太多,但我有一个很难描述的非常具体的问题:
我正在使用 Android Studio 制作一个 android 应用程序,对于一个活动,我有一个列表,其中存储在 json 文件中的值将去往。
为了获取这些值,我使用了另一个带有 get() 方法的类,该方法返回数组列表中的值。问题是 IDE 说了两个相反的陈述:在活动类中它说 get() 方法必须是静态的,而在另一个类中它说 get() 方法不能是静态的。
这是代码:
CompanySelector.java(活动)
public class CompanySelector extends AppCompatActivity {
ArrayList<String> companyList = CompanyStorage.get();
}
==> 这里它在 CompanyStorage.get() 中给出了一个错误,并说 get() 应该是静态的。
CompanyStorage.java(另一个类)
abstract class CompanyStorage extends Context {
private ArrayList<String> companyList;
protected CompanyStorage() throws JSONException {
companyList = get();
}
ArrayList<String> get() throws JSONException {
JSONObject companyData = new JSONObject();
ArrayList<String> companyList = new ArrayList<>();
// Open data.json and convert to JSONObject
String json = OpenFileAsString("data.json");
try {
companyData = new JSONObject(json);
} catch (JSONException e) {
e.printStackTrace();
}
// return json array as ArrayList
if (companyData.getJSONArray("companies") != null) {
for (int i=0;i<companyData.getJSONArray("companies").length();i++){
companyList.add(companyData.getJSONArray("companies").getString(i));
}
}
return companyList;
}
public String OpenFileAsString(String filename) {
try {
InputStream stream = getAssets().open( filename );
int size = stream.available();
byte[] bytes = new byte[size];
stream.read(bytes);
stream.close();
return new String( bytes );
} catch ( IOException e ) {
Log.i("GuiFormData", "IOException: " + e.getMessage() );
}
return null;
}
}
==> 这里说如果 get() 是静态的,OpenFileAsString() 也应该是静态的,但是它会报错,因为 getAssets() 不能在静态方法中。
有人知道我应该怎么做吗?我对 Java 和应用程序设计相当陌生。..
【问题讨论】:
-
然后创建 CompanyStorage 对象并公开 get() 方法并通过 CompanyStorage 对象tutorialspoint.com/java/java_object_classes.htm 简单地访问它
-
如果我这样做,它会要求实现所有方法...
标签: java android static static-methods