2014-06-19 4 views
-4

나는 자바에 몇 가지 코딩을하고있는 중이 야,하지만이 작동하지 않습니다자바 자동 증가 ID

public class job 
{ 
    private static int count = 0; 
    private int jobID; 
    private String name; 
    private boolean isFilled; 

    public Job(, String title,){ 
     name = title; 
     isFilled = false; 
     jobID = ++count; 
    } 
} 

나는 자동 증가 새 항목이 작성 될 이드해야합니다.

+0

이 –

+0

title' 문자열'주위에 쉼표를 제거하십시오는 여러 작업 개체를 만드는 경우, 다음주는 (클래스 외부에서 작업 ID를 추적 내 코드를 잘 –

+0

입니다 너 job_1, job_2 등) – Kyte

답변

15

이 시도 :

public class Job { 
    private static final AtomicInteger count = new AtomicInteger(0); 
    private final int jobID; 
    private final String name; 

    private boolean isFilled; 

    public Job(String title){ 
    name = title; 
    isFilled = false; 
    jobID = count.incrementAndGet(); 
} 
+4

+1 AtmicInteger (멀티 스레딩은 언급되지 않았지만 항상 좋습니다 Threadsafe 되려면) –

+0

마지막은? 최종 AtomicInteger? 일단 count 변수가 초기화되면 변경 될 수 없다는 것을 의미합니다. –

-1
public class job 
{ 
    private static int jobID; 
    private String name; 
    private boolean isFilled; 

    public Job(String title){ 
     name = title; 
     isFilled = false; 

     synchronized { 
      jobID = jobID + 1; 
     } 
} 
0
public class Job // Changed the classname to Job. Classes a written in CamelCasse Uppercase first in Java codeconvention 
{ 
    private static int count = 0; 
    private int jobID; 
    private String name; 

    private boolean isFilled; // boolean defaults to false 

    public Job(String title){ // Your code wan unable to compile here because of the ',' 
     name = title; 
     isFilled = false;  // sets false to false 
     jobID = ++count; 
    } 
} 

코드는 작동하지만이 Integer.MAX_VALUE를 치면 당신은 몇 가지 문제가 발생할 수 있습니다.

long을 선택하는 것이 더 좋은 해결책 일 수 있습니다. 당신은 단지 고유 식별자가 필요한 경우 또는 UUID.randomUUID()

+0

고마워요, 보지 못했습니다 –

0

를 사용하여 다음,

public class TestIncrement { 
private static int count = 0; 
private int jobID; 
private String name; 

private boolean isFilled; 

public TestIncrement(String title) { 
    name = title; 

    isFilled = false; 
    setJobID(++count); 
} 

public int getJobID() { 
    return jobID; 
} 

public void setJobID(int jobID) { 
    this.jobID = jobID; 
} 

}

public class Testing { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    for (int i = 0; i < 10; i++) { 
     TestIncrement tst = new TestIncrement("a"); 
     System.out.println(tst.getJobID()); 
    } 
} 
을 테스트하려면 다음을 사용하십시오

}

이미 그런데,이 일을하고