2012-02-13 2 views
0

У меня есть два класса, следующий:Использование ссылочного переменная

первый класс:

package MemoryInterfaces; 

import java.util.SortedSet; 
import java.util.TreeSet; 

/** 
* 
* @author omid 
*/ 
public class MemoryData<T> { 

private Object _datas =null; 

public MemoryData() { 
} 

/** 
* @return the _data 
*/ 
public SortedSet<T> getDatas() { 
    if (this._datas==null) { 
    this._datas=new TreeSet<T>(); 
    getDataOfDatabase(); 
    } 

    return (SortedSet<T>)_datas; 
} 

/** 
* @param data the _data to set 
*/ 
public void setDatas(SortedSet<T> datas) { 
    this._datas=datas; 
} 

public T getDataOfMemory(int i) { 
    return (T) getDatas().toArray()[i]; 
} 

public void addItem(T data) { 
    this.getDatas().add(data); 
} 

public void remove(T data) { 
    this.getDatas().remove(data); 
} 

protected void getDataOfDatabase() { 
} 
} 

второго класс:

public class CabinetImpl extends MemoryData<CabinetItem> { 

private static SortedSet<CabinetItem> _datas = null; 

public CabinetImpl() { 
    setDatas(_datas); 
} 

@Override 
protected void getDataOfDatabase() { 
    CabinetDaoImpl _cab = new CabinetDaoImpl(); 
    List<Cabinet> _lst = _cab.getTable(); 

    if (!_lst.isEmpty()) { 

    for (int i = 0; i < _lst.size(); i++) { 
     AddToMemory(_lst.get(i).getID(), _lst.get(i).getName(), _lst.get(i).getSub(), _lst.get(i).getDepid()); 
    } 
    _datas=getDatas(); 
    } 
} 

private void AddToMemory(int id, String name, int sub, int depid) { 
    CabinetItem _cab = new CabinetItem(id, name, sub, depid); 

    addItem(_cab); 
} 
} 

во втором классе, у меня есть статический varible (_datas) быть при построении класса cabinetImpl, _datas передавать в MemoryData, но не влиять на изменения в MemoryData на _datas.

Пожалуйста, помогите мне!

+0

Предлагаю вам конкретный вопрос. –

+0

Это настоятельно предполагает, что вы используете неправильную коллекцию. 'return (T) getDatas(). toArray() [i];' –

ответ

0

Вы не можете переопределить приватную переменную суперкласса в унаследованном классе. Используйте геттеры и сеттеры MemoryData

0

У вас есть два разных поля с одинаковым именем в разных классах.

Это не отношение друг к другу и к другим типам. Если вы хотите иметь только одну копию, я предлагаю удалить один из них.

Смежные вопросы