service层中的某个函数:
public class ManangeMananger extends ServiceException {
public String TIME;
public void CreateTable() throws Exception{
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
this.setTIME(dateFormat.format(now));
//this.TIME = dateFormat.format(now);
System.out.println(TIME);
String sql = "CREATE TABLE backup_docinfo_"
+ this.TIME
+ "各个字段";
ConnectionDB ed = new ConnectionDB();
try {
ed.ExcuteSql(sql);
} catch (Exception e) {
e.printStackTrace();
}
}
public String getTIME() {
return TIME;
}
public void setTIME(String tIME) {
TIME = tIME;
}
}
在web层某个函数调用了CreateTable()方法中的TIME变量。
private String backuptime;
private ManangeMananger manangeManager;
public void InsertData() throws Exception{
//this.backuptime = this.manangeManager.TIME;
this.backuptime = this.manangeManager.getTIME();
……;
……;
}
public String getBackuptime() {
return backuptime;
} public void setBackuptime(String backuptime) {
this.backuptime = backuptime;
} @Autowired
public void setManangeManager(ManangeMananger manangeManager) {
this.manangeManager = manangeManager;
}我想问的是如果不使用get/set方法传值赋值,而是直接写this.TIME = dateFormat.format(now);这时候TIME有值,但是传过去给backuptime显示的就是null了。这是为什么。直接传值赋值与用get/set传值赋值有什么区别吗?请指教~~
这个得看逻辑上哪种符合 有时候需要set的判断就调set 不需要的在当前类里面也应该可以直接访问成员
第一问你先确定下是不是同一个对象吧 看代码看得头晕 下次记得用“插入源代码”
关键问题应该出在CreateTable()的调用上,
this.manangeManager.CreateTable();//加上这句
this.backuptime = this.manangeManager.TIME;可以取到不?
而你虽然声明了private ManangeMananger manangeManager;
但你却没有实例化你应new后,在调用CreateTable才会有值吧
怀疑是不同的ManagerManger对象,所以值不一样
LZ是怎么传值的?调用setManangeManager方法?
我new了一个对象试了一下,调用同一对象传过去也为null
--------------------------------对于直接访问TIME,以及get/set得到的值有差异的情况,可能还需要把你现在写的调用的过程拿出来看一下,才能做更多的判断。确实可能存在不是同一对象的情况。
set赋值和 直接赋值的区别就是 private 和 public 的区别。
@Autowired
public void setManangeManager(ManangeMananger manangeManager) {
this.manangeManager = manangeManager;
}传递的manangeManager并不是你在web层某个函数调用了CreateTable()方法的那个对象
@Autowired
public void setManangeManager(ManangeMananger manangeManager) {
this.manangeManager = manangeManager;
}传递的manangeManager并不是你在web层某个函数调用了CreateTable()方法的那个对象
你用了public就根本不用写get/set方法。直接访问就可以了。楼主还是先了解一下get/set方法的意义吧。
private String backuptime;
private ManangeMananger manangeManager;
public void InsertData() throws Exception{
//this.backuptime = this.manangeManager.TIME;
this.backuptime = this.manangeManager.getTIME();
……;
……;
}你这里面这个manangeManager是新的实力,又不是传过来的。相当于这里面有两个ManangeMananger对象。这就是为什么你那个backuptime是空的。
恩。。这样肯定是没有值得。。这里的manageManager是空需要对这个manangeManager实例化