【问题标题】:Use Reference Variable使用参考变量
【发布时间】:2012-02-13 08:44:13
【问题描述】:

我有两节课,如下:

头等舱:

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

在第二个类中,我有一个静态变量(_datas)是在构造 cabinetImpl 类时,_datas 传输到 MemoryData 但不影响 MemoryData 对_datas 的更改。

请帮帮我!

【问题讨论】:

  • 我建议你是一个具体的问题。
  • 这强烈表明您使用了错误的集合。 return (T) getDatas().toArray()[i];

标签: java variables


【解决方案1】:

您不能在继承类中覆盖超类的私有变量。使用 MemoryData 的 getter 和 setter

【讨论】:

    【解决方案2】:

    在不同的类中有两个同名的不同字段。

    它们彼此没有关系,而且类型不同。如果您只想拥有一份副本,我建议您删除其中一份。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      相关资源
      最近更新 更多