get/set方法传值赋值与直接传值赋值的区别

auvshiniya 2011-10-13 02:25:50

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传值赋值有什么区别吗?请指教~~
...全文
3313 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
莫欺少年穷 2012-02-29
  • 打赏
  • 举报
回复
安全考虑,封装是必须的!直接调用,在项目里绝对不存在!!!
五哥 2012-02-29
  • 打赏
  • 举报
回复
没有什么区别 ,只是set 封装了属性,不让用户看到,只能通过方法来访问属性 ,而不能直接改变属性的值
  • 打赏
  • 举报
回复
应该是一样的
unbelievable2010 2012-02-28
  • 打赏
  • 举报
回复
LZ 研究一下址传 跟值传 就懂了~~~~~~~~~~~~
ABCplm123 2012-02-28
  • 打赏
  • 举报
回复
不太清楚嗳,我们一般都是在private下,封装时候才用set()get()的
kouyiSC 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rain000 的回复:]
public String TIME;又不是静态的。
而你虽然声明了private ManangeMananger manangeManager;
但你却没有实例化

你应new后,在调用CreateTable才会有值吧
[/Quote]

恩。。这样肯定是没有值得。。这里的manageManager是空。。。需要对这个manangeManager实例化。。。
五哥 2011-10-21
  • 打赏
  • 举报
回复
封装嘛 ,把属性隐藏 ,访问属性均通过对象方法
ralpyang 2011-10-21
  • 打赏
  • 举报
回复
这个跟是不是用Getter / Setter一点关系都没有
ralpyang 2011-10-21
  • 打赏
  • 举报
回复
这个做肯定不行啦。

在web层某个函数调用了CreateTable()方法中的TIME变量。
private String backuptime;
private ManangeMananger manangeManager;
public void InsertData() throws Exception{
//this.backuptime = this.manangeManager.TIME;
this.backuptime = this.manangeManager.getTIME();
……;
……;
}

你这里面这个manangeManager是新的实力,又不是传过来的。

相当于这里面有两个ManangeMananger对象。这就是为什么你那个backuptime是空的。
zxf5115 2011-10-20
  • 打赏
  • 举报
回复
学习啦
sunxitao88 2011-10-20
  • 打赏
  • 举报
回复
很经典的问题
潇洒王子 2011-10-20
  • 打赏
  • 举报
回复
27楼的建议可以,有的时候没必要搞那么复杂
dryZeng 2011-10-19
  • 打赏
  • 举报
回复
public String TIME;


你用了public就根本不用写get/set方法。直接访问就可以了。

楼主还是先了解一下get/set方法的意义吧。
scrack 2011-10-18
  • 打赏
  • 举报
回复
TIME变量是ManangeMananger类的变量,你只是调用了ManangeMananger中的getTime()方法,并没有调用CreateTable()方法中的this.setTIME(dateFormat.format(now));,所以没有给time赋值,

在web层某个函数调用了中的TIME变量this.backuptime = this.manangeManager.getTIME();也就为null。

要不然就是
@Autowired
public void setManangeManager(ManangeMananger manangeManager) {
this.manangeManager = manangeManager;
}

传递的manangeManager并不是你在web层某个函数调用了CreateTable()方法的那个对象
oowangfanoo 2011-10-18
  • 打赏
  • 举报
回复
你有调用方法么?
tiantangmenren 2011-10-18
  • 打赏
  • 举报
回复
应该可以取到值 怎么没看到你调用CreateTable() 方法的代码
Nice_Lee 2011-10-15
  • 打赏
  • 举报
回复
能把相关源代码发来研究一下否? 鄙人邮箱 zhiheng.li.metaphor@gmail.com
wjacketcn 2011-10-15
  • 打赏
  • 举报
回复
TIME变量是ManangeMananger类的变量,你只是调用了ManangeMananger中的getTime()方法,并没有调用CreateTable()方法中的this.setTIME(dateFormat.format(now));,所以没有给time赋值,

在web层某个函数调用了中的TIME变量this.backuptime = this.manangeManager.getTIME();也就为null。

要不然就是
@Autowired
public void setManangeManager(ManangeMananger manangeManager) {
this.manangeManager = manangeManager;
}

传递的manangeManager并不是你在web层某个函数调用了CreateTable()方法的那个对象
wangwengfeng 2011-10-15
  • 打赏
  • 举报
回复
你是在set给全局变量赋值的,返回当然有值,直接取时,效果当然一样,但你没有为其变量赋值,至少你想直接用,先要直接赋值吧
tangwei070 2011-10-13
  • 打赏
  • 举报
回复
如果你定义了 public 就没什么区别的了。
set赋值和 直接赋值的区别就是 private 和 public 的区别。
加载更多回复(19)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧