如何在Java中访问类的成员
如果我知道一个成员的属性,我可以得到其余的属性吗 我正在创建这样的成员:如何在Java中访问类的成员,java,json,class,member,Java,Json,Class,Member,如果我知道一个成员的属性,我可以得到其余的属性吗 我正在创建这样的成员: ArrayList<Events> eventList = new ArrayList<Events>(); for (int i = 0; i < elist.length(); i++){ JSONObject e = elist.getJSONObject(i); //store each item we want into a variable String id
ArrayList<Events> eventList = new ArrayList<Events>();
for (int i = 0; i < elist.length(); i++){
JSONObject e = elist.getJSONObject(i);
//store each item we want into a variable
String id = e.getString(TAG_id);
String event = e.getString(TAG_event);
String eventCity = e.getString(TAG_city);
//add the event
eventList.add(new Event(id, event.toUpperCase(), eventCity));
}
for( Event evt : allEvents ) {
System.out.println( evt.getId() );
System.out.println( evt.getEvent() );
System.out.println( evt.getCity() );
}
那么,如果我知道班上有什么活动,我可以得到Id和城市吗
到目前为止,我唯一想做的是:
String show = eventList.get(1).toString();
但是如果我不知道索引呢?这里有一种方法:
public String getEventById(List<Event> eventList, String id) {
for (Event event : eventList) {
if (event.getId().equals(id)) {
return event.getEvent();
}
}
return null;
}
公共字符串getEventById(列表eventList,字符串id){
用于(事件:事件列表){
if(event.getId().equals(id)){
return event.getEvent();
}
}
返回null;
}
因此,我认为您在理解这里使用的各种数据结构时遇到了一些困难。让我们看看我能否从简单开始。因此,给定一个事件实例,您可以让各个字段执行以下操作:
Event evt = ...
System.out.println( evt.getEvent() );
System.out.println( evt.Id() );
System.out.println( evt.getCity() );
要获取各种字段,您可以使用指向单个事件实例的变量。现在看起来您在ArrayList中存储了多个事件实例。因此,您可能希望对所有事件执行一些操作,在这种情况下,您希望循环数组中的每个实例,并执行如下操作:
ArrayList<Events> eventList = new ArrayList<Events>();
for (int i = 0; i < elist.length(); i++){
JSONObject e = elist.getJSONObject(i);
//store each item we want into a variable
String id = e.getString(TAG_id);
String event = e.getString(TAG_event);
String eventCity = e.getString(TAG_city);
//add the event
eventList.add(new Event(id, event.toUpperCase(), eventCity));
}
for( Event evt : allEvents ) {
System.out.println( evt.getId() );
System.out.println( evt.getEvent() );
System.out.println( evt.getCity() );
}
这将打印allEvents ArrayList中的所有事件。您还可以编写一个基于给定事件ID查找事件的方法
public Event findEvent( String id, List<Event> allEvents ) {
for( Event evt : allEvents ) {
if( evt.getId().equals(id) ) {
return evt;
}
}
return null;
}
通常,类名是单数的。事件而不是事件。@GilbertLeBlanc Ok。。。您知道如何基于其中一个变量访问成员吗?您不应该将字符串更改为public。Java标准是使用getter和setter拥有私有实例变量。如果您需要更改这些字符串,您应该使用类似于
public void setId(String id)
的东西将id更改为新值,这样就可以了,我认为这很有帮助。我将把findEvent代码更改为evt.getEventName().equals(event\u name)
,因为我只知道event\u名称。我编辑了我的问题以解决命名问题。这是放在我的事件类中的方法还是放在它外部的类中的方法?因为findEvent()必须处理事件实例的集合(即1个或多个),所以它将属于事件类外部,因为它只处理单个事件实例,而不处理多个实例。事件和事件集合之间的基数是不同的。这个方法是有效的,我理解它,除了我们为什么将类型更改为LIST。谢谢你的帮助@silversunhunter:在代码中使用接口(列表)比使用具体实现(ArrayList)更好。主要原因是它使您的代码更加灵活。您可以从ArrayList更改为LinkedList,而无需更改其余代码。