死の循環、ああ死の循環、みんなは覚えています


初期値は勝手に与えてはいけません!例えば、卵が痛い

 
  package com.tjych.pattern.prototype;

public class test1{

	private String s = "sdfsdf";
	private int test = 1;
	
	private test1 test2 = new test1();
	
	public String getS() {
		return s;
	}

	public void setS(String s) {
		this.s = s;
	}

	public int getTest() {
		return test;
	}

	public void setTest(int test) {
		this.test = test;
	}

	public test1 getTest2() {
		return test2;
	}

	public void setTest2(test1 test2) {
		this.test2 = test2;
	}

	public static void main(String[] args) {
		test1 t = new test1();
	
	}
	

}



一見問題ありませんが、運転してみたら発見ですよmygod!!!

Exception in thread "main" java.lang.StackOverflowError
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)
	at com.tjych.pattern.prototype.test1.<init>(test1.java:8)


なるほど、newオブジェクトの時に入ったみたいにループだった!!卵が痛い!だから覚えてね