如何将一个列表中的更改反映到另一个列表中?

时间:2017-09-16 18:59:05

标签: java list collections

基本上我正在尝试做的是有一个支持列表,它可以从其他“子列表”中获得反映给它的所有更改。更详细一点,这就是我要做的事情:

public abstract class User
{

    protected List<UserHandler> defaultHandlers
}

public class Customer extends User
{

    // All changes made to this list should the one from the parent class
    private List<CustomerHandler> userHandlers
}

public class Admin extends User
{

    // Similarily with this one
    private List<AdminHandler> adminHandlers
}

public interface UserHandler
public interface CustomerHandler extends UserHandler
public interface AdminHandler extends UserHandler

这样的功能是否可能?

1 个答案:

答案 0 :(得分:1)

显而易见的答案是在defaultHandlersCustomer中使用Admin,因为它已设置为protected

但是,如果您要查找将修改defaultHandlers的{​​{1}}子列表,则可以使用defaultHandlers;来自documentation

  

List#subList

     

返回指定fromIndex(包含)和toIndex(独占)之间此列表部分的视图。 (如果fromIndex和toIndex相等,则返回的列表为空。)返回的列表由此列表支持,因此返回列表中的非结构更改将反映在此列表中,反之亦然。返回的列表支持此列表支持的所有可选列表操作。

请记住,如果您的程序是多线程的,则需要处理同步。