新聞中心
在Java中任何對(duì)象都繼承于Object類,因此,每個(gè)類都有一個(gè)toString方法用于返回當(dāng)前對(duì)象的字符串形式(可能是對(duì)象地址或其他和對(duì)象相關(guān)的信息)。在每個(gè)類中也可以覆蓋toString方法以返回自定義的字符串。如下面的代碼將以一定的格式返回對(duì)象的地址:

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供淮南網(wǎng)站建設(shè)、淮南做網(wǎng)站、淮南網(wǎng)站設(shè)計(jì)、淮南網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、淮南企業(yè)網(wǎng)站模板建站服務(wù),10余年淮南做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
- package string;
- public class InfiniteRecursion
- {
- public String toString()
- {
- return "address:" + this;
- }
- public static void main(String[] args)
- {
- System.out.println(new InfiniteRecursion().toString());
- }
- }
如果運(yùn)行上面的程序,將拋出StackOverflowError異常,這說(shuō)明程序的工作棧溢出了。導(dǎo)致這種情況最常見(jiàn)的錯(cuò)誤就是無(wú)限遞歸。這們發(fā)現(xiàn)在toString中使用this來(lái)返回對(duì)象的地址,如果這樣調(diào)用,將會(huì)無(wú)限調(diào)用InfiniteRecursion類的toString方法。如果要避免這種情況的出現(xiàn),要將toString改成如下的形式:
- public String toString()
- {
- return "address:" + super.toString();
- }
也就是說(shuō),不能再調(diào)用當(dāng)前類的toString方法,必須調(diào)用當(dāng)前類父類的toString方法才能返回正確的結(jié)果。
名稱欄目:防止overridetoString方法時(shí)產(chǎn)生遞歸
本文鏈接:http://www.dlmjj.cn/article/cdejopc.html


咨詢
建站咨詢
