![](/img/trans.png)
[英]Given a class member name or object, how can I find its declaring/enclosing class object in java?
[英]i Have written this membership class, how can i create a method to find a specific ID given to a member?
各位,到目前为止,这是我的会员资格类,我正在努力创建一种方法,该方法可以找到仅使用uniqueId查找器给出的完整成员详细信息。 请帮忙。
public class Membership {
private String FirstName;
private String LastName;
private int memberId;
private String listOfMembers;
private int uniqueId;
private long phoneNumber;
public Membership(String FirstName, String LastName, int uniqueId,
long phoneNumber)
{
this.uniqueId = uniqueId;
this.FirstName = FirstName;
this.LastName = LastName;
this.phoneNumber = phoneNumber;
}
public String getMember()
{
return FirstName + LastName;
}
public String getlistOfMembers()
{
return (FirstName + LastName);
}
public int getId()
{
return uniqueId;
}
public void MemberId (int Id)
{
System.out.println("Id" + Id);
}
public String getMemberDetails ()
{
System.out.println("Member Id: " + uniqueId);
System.out.println("first name: " + FirstName);
System.out.println("LastName: " + LastName);
System.out.println("Member phone number: " + phoneNumber);
return listOfMembers;
}
}
这是我到目前为止所做的。
问题:
System.out.println
语句,而是将其保留在UI类或main方法中(如果非常简单)。 System.out.println
语句 listOfMembers
字段,或者为什么它只是一个字符串。 您可能想将“会员”和“会员资格”组合到一个类中-请勿这样做。 Member
因为它仅包含单个Member的信息。 ArrayList<Member>
public Member getMember(int id)
方法,该方法将返回上面列表中共享传递给该方法的ID的项目。 一个简单的for循环遍历列表,比较id即可。 用一个例子来补充气垫船的答案。
您可以让类处理所有成员,这是非常基本的实现。
public class Membership {
private final Map<Integer, Member> members = new HashMap<>();
public void addMember (Integer uniqueId, Member member) {
members.put (uniqueId, member);
}
public void getMember (Integer uniqueId) {
return members.get (uniqueId);
}
...
}
然后,您便拥有了这样的Member
本身,可以根据需要添加更多字段。
public class Member {
private String firstName;
private String lastName;
public Member (String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName () {
return firstName;
}
...
}
这是要使用的OOP中非常基本但很强大的功能。
再次查看气垫船的答案,因为它提供了所有详细信息。 如果他们要编辑/删除,我将对其进行更新。
地图与清单
一件小事是我反对使用ArrayList<E>
存储Member
。 如果添加到可以删除用户的实现中,则uniqueId
将在用户之间转移。 相反,我将确保您没有添加到现有用户。
如果您想保持简单并开始使用,则ArrayList<E>
可以正常工作,请知道您可能会遇到的功能问题, uniqueId
不一定与Member
绑定。
“我对Java很陌生,从未接触过“地图”,您能解释一下它是什么吗?”
“一个将键映射到值的对象。一个映射不能包含重复的键;每个键最多可以映射一个值。” -来自: 文档 。
而不是像在Array
那样使用直接索引:
或像List
:
对于Map
:
Map
可能没有3或4处。 您可以将任何Object
存储为任何Object
。 String
是公用key
另一个示例。 我建议使用Map并将id用作Map的键,并将Membership的对象存储为Value,从而也易于检索和存储。
与此类似,
Map<Integer,Membership> map = new HashMap<Integer,Membership>();
Membership m = new Membership("First", "LastName", 1,1234567890);
map.put(m.getId(), m);
要通过ID获得会员,
System.out.println(map.get(id).getMemberDetails());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.