2012-02-13 3 views
0

je classe deux, ce qui suit:utilisation de référence variable

première classe:

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() { 
} 
} 

deuxième classe:

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); 
} 
} 

dans la deuxième classe, j'ai une varible statique (_datas) être lors de la construction de la classe cabinetImpl, _datas transfert à MemoryData mais pas effectuer de modifications dans MemoryData sur _datas.

Aidez-moi!

+0

Je suggère que vous êtes une question spécifique. –

+0

Ceci suggère fortement que vous utilisez la mauvaise collection. 'return (T) getDatas(). àArray() [i];' –

Répondre

0

Vous n'êtes pas autorisé à remplacer une variable privée d'une super classe dans une classe héritée. Utiliser les getters et setters de MemoryData

0

Vous avez deux champs différents avec le même nom dans différentes classes.

Ils ne sont pas liés les uns aux autres et de types différents. Si vous voulez en avoir une seule copie, je vous suggère de supprimer l'une d'entre elles.

Questions connexes