A类: 包含Employee对象的填充arraylist,每个对象包含employeeName和employeeNumber
B类是否可以创建一个引用A类雇员对象的arraylist的变量?我只需要搜索那个arraylist。也许打印出来。不改变任何内容。
我如何做到这一点的任何策略或示例?
答案 0 :(得分:2)
package p1; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ArrayReference { public static void main(String[] args) { new BB().method(); } } class AA { private List list = new ArrayList(); public List getEmpList() { return Collections.unmodifiableList(list); } } class BB { public void method() { List list = new AA().getEmpList(); list.add(new Emp()); // here runtime exception will occour if we // try to add objects in list. // java.lang.UnsupportedOperationException is an exception for add // method in list } } class Emp { }
答案 1 :(得分:1)
在A类上编写一个getter方法,公开ArrayList
并简单地从B类调用getter
class A {
List myList...;
public List<Employee> getEmployees() {
...
}
}
class B {
A handleToA;
public void search() {
handleToA.getEmployees()...
}
}
答案 2 :(得分:1)
当然,您只需允许Class A
与ArrayList
分享Class B
。您可以在public
中创建Class A
getter 方法,将ArrayList
返回给请求它的任何其他类。
Class A
{
private List<Employee> employees;
public A() {
this.employees = new ArrayList<>();
}
public List<Employee> getEmployees(){ return this.employees; }
}
现在Class B
可以通过致电ArrayList
来询问员工getEmployees()
Class B
{
private A a;
public B() {
this.a = new A();
// fill the list ...
List<Employee> fromA = a.getEmployees();
}
}
答案 3 :(得分:1)
在A类中有一个getter,不需要在ClassB中重复它
class A {
List<Employee> employeeList = new ArrayList<Employee>();
public List<Employee> getEmployeeList() {
return employeeList;
}
}
答案 4 :(得分:1)
我认为这就是你要找的东西:
Class A {
private List<Employees> empList = new ArrayList<Employees>();
//Setters
//Getters
//Load data to empList
}
Class B {
void empList() {
A empClass = new A();
List<Employees> empListFromClassA = new ArrayList<Employees>();
empListFromClassA.addAll(getEmpList()); //Getter from class A
}
希望有所帮助
答案 5 :(得分:1)
如果您只想在列表中搜索,请使用:
A级{ 列出myList ...;
public List<Employee> getEmployees() {
return myList.clone();
}
}
然后返回列表的克隆。如果您更改克隆原始列表保持不变
答案 6 :(得分:1)
在A类中创建一个公共getter方法,并通过Class B访问它。
class A{
private List<Employee> employees;
public List getEmployees(){ return this.employees;}
}
class B{
private List<Employee> employees;
public B(){
A a = new A();
employees = a.getEmployees();
}
}
答案 7 :(得分:1)
你试图实现的现象是“封装”。 在java中我们可以通过实现Getter来实现这一点,而setter方法是Plain java对象。 Getter和setter在java应用程序开发中扮演着非常重要的角色。
您可以实施这样的解决方案
import java.util.ArrayList;
import java.util.List;
class A {
private List<String> empList = new ArrayList<String>();
A(){
empList.add("Employee 1");
empList.add("Employee 2");
empList.add("Employee 3");
empList.add("Employee 4");
empList.add("Employee 5");
}
public List<String> getEmpList() {
return empList;
}
public void setEmpList(List<String> empList) {
this.empList = empList;
}
}
class B {
void empList() {
A empClass = new A();
List<String> empListFromClassA = empClass.getEmpList();
System.out.println("This is what you need ? "+ empListFromClassA.toString());
}
}
public class TEST{
public static void main(String Args[]){
B classb = new B();
classb.empList();
}
}