자바 Reflection기능 : 동적으로 클래명을 이용해서 객체를 생성

Class cc = Class.forName(action_class); //action.BoardListAction

Object c = cc.newInstance();//객체생성

Method m = cc.getDeclaredMethod(method, HttpServletRequest.class,  HttpServletResponse.class );

String result = (String)m.invoke(c, request, response);

'Programming > JAVA' 카테고리의 다른 글

인터페이스 간단 개념  (0) 2013.08.12
열거형 enum 간단 예  (0) 2013.07.25
내부 클래스를 사용하는 경우  (0) 2013.07.25
익명 클래스 예  (0) 2013.07.25
JAVA 배열 기초 예문  (0) 2013.07.19


1. 공개된 기능의 리스트 목록

2. 규격 표준을 위한 기능도 함

3. 강한 커플링을 피하기 위함


※ 1의 개념만으로 2,3이 자동으로 처리된다.

'Programming > JAVA' 카테고리의 다른 글

자바의 클래스 동적으로 생성 시키기 예  (0) 2013.10.16
열거형 enum 간단 예  (0) 2013.07.25
내부 클래스를 사용하는 경우  (0) 2013.07.25
익명 클래스 예  (0) 2013.07.25
JAVA 배열 기초 예문  (0) 2013.07.19


열거형 enum


enum Lesson{ JAVA, XML, EJB, FLEX }

Lesson le = Lesson.XML;


System.out.println( le );  // 콘솔에 XML이라는 글자가 찍힘 







'Programming > JAVA' 카테고리의 다른 글

자바의 클래스 동적으로 생성 시키기 예  (0) 2013.10.16
인터페이스 간단 개념  (0) 2013.08.12
내부 클래스를 사용하는 경우  (0) 2013.07.25
익명 클래스 예  (0) 2013.07.25
JAVA 배열 기초 예문  (0) 2013.07.19


- A클래스와 B 클래스가 서 맞참조 하고 있는 경우,

   차라리 내부클래스를 사용하는 것이 편리하다.

- 개발 구현상 어쩔 수 없는 경우말고는 가급적 사용을 지양.

'Programming > JAVA' 카테고리의 다른 글

인터페이스 간단 개념  (0) 2013.08.12
열거형 enum 간단 예  (0) 2013.07.25
익명 클래스 예  (0) 2013.07.25
JAVA 배열 기초 예문  (0) 2013.07.19
클래스 변수 정리  (0) 2013.07.18

익명클래스

 - 클래스 선언과 생성을 하는 게 특징이다.

 - 단 한번만 사용될 수 있고 오직 하나의 객체만 생성할 수 있는 1회용 클래스이다.

 -  생성자를 가질 수 없고, 오직 단하나의 클래스를 상속 받거나

    단 하나의 인터페이스만을 구현할 수 있다.

 - 자바의 정석 p 343~344 "익명 클래스" 부분 참고



익명 클래스 예1)


public class InnerEx{


// 익명 클래스 선언

Hello h = new Hello{


// 멤버변수

int a = 10;


// 메스드

void fx(){

// 메서드 구현

}

}// end class

}



익명 클래스 예2)


//익명 클래스 실용 예.

// 볼드체가 익명클래스 부분이다.

this.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

// TODO Auto-generated method stub

System.exit(0);

}

});


'Programming > JAVA' 카테고리의 다른 글

열거형 enum 간단 예  (0) 2013.07.25
내부 클래스를 사용하는 경우  (0) 2013.07.25
JAVA 배열 기초 예문  (0) 2013.07.19
클래스 변수 정리  (0) 2013.07.18
생성자 개념 정리 및 생성자 오버로딩 예문  (0) 2013.07.17

package mymain;

import java.util.Random;

public class MyMain {


public static void main(String[] args) {

// String 배열 선언 및 생성

String [] str = new String[5];

// 값 설정

str[0] = "개";

str[1] = "고양이";

str[2] = "비둘기";

str[3] = "참새";

str[4] = "까치";

// 값 출력

for (int i = 0; i < str.length; i++) {

System.out.println(str[i]);

}

// String 배열 생성 방법2

// 생성과 함께 값을 설정.

String [] str2 = {"한국어","일본어","영어","중국어","독일어"};

// 값 출력

for (int i = 0; i < str2.length; i++) {

System.out.println(str2[i]);

}

// int형 배열 선언 및 생성

int []num = new int[10];

// 배열에 값 쓰기

for (int i = 0; i < num.length; i++) {

Random rmd = new Random();

num[i]= rmd.nextInt(50);

}

// 배열의 값 읽어오기

for (int i = 0; i < num.length; i++) {

System.out.println(num[i]);

}

}


}

package mymain;


/*

       ◆ static  클래스 변수 정리


  static : 프로그램 시작시 생성된다.

  1. static 변수 : 클래스내의 객체간 공유변수

  2. static : 메서드 : 객체 생성없이 사용가능 (Ex: Math.abs())

  3. static class         : inner class(내부클래스)에서 사용

  4. static 초기화         :  

 */



/*

  변수

  1. 인스턴스 변수 : 클래스내에 선언된 변수 (객체가 생성되면)

        2. 클래스 변수(static 변수) : 선언되는 시점이 인스턴스 변수와 다르다.

        프로그램 시작시 생성

        3. 객체 생성없이 사용가능 (예: Math.abs());

        4. 클래스 변수는 inner class(내부클래스)에서 사용된다.

 */


class ExStatic{

/*

  인스턴스 변수는 객체를 생성하고 나서 사용할 수 있지만

  클래스 변수는 객체 생성 없이 사용이 가능하다.

  이미 프로그램 시작시 클래스 변수는 생성되어 있기 때문이다.

*/


// 인스턴스 변수

int a;

// 클래스 변수

// static이라도 접근제한자의 영향을 받는다.

// 즉, private static int static_a; 라고 접근제한자를 사용하면

// 외부에서 사용이 불가능하다.

static int static_a; 

}


public class MyMain {

// static 초기화

// 가장먼저 실행된다.

// main 보다 먼저 실행된다.

static

{

System.out.println("(순서1) 내가 먼저 실행 돼");

System.out.println("(순서2) JDBC 라이브러리를 여기서 초기화 ");

}

public static void main(String[] args) {

// 클래스 변수라 객체 생성 없이 사용가능

ExStatic.static_a = 10;

System.out.println("(순서3)" + ExStatic.static_a);

}


}



package mymain;


/*

  ■ 생성자 메소드

 

  myMemo : 생성자는 객체생성시 객체를 초기화하는 특수메서드이다.

  1. 생성자의 목적은 클래스내의 멤버변수를 초기화하는 것이다.

  2. 생성자는 return값이 없다.

  3. 생성자는 중복정의 가능 (오버로딩)

  4. 생략가능 : 초기화 포기

        5. this() : 자신의 생성자를 표현

  (자신의 생성자를 호출할 때 사용함. 

       어떻게 사용하는지에 따라 다르겠지만 그다지 자주 사용되지는 않는다)

 */


class MyDate

{

// 기본 생성자

public MyDate(){

System.out.println("기본 생성자를 호출하였습니다.");

}

// 생성자 오버로딩

public MyDate(int y, int m, int d){

year = y;

month =m;

day = d;

}

// 인스턴스 변수____________________________________________// 

private int;

        private  year;

  private month, day;

// Getter/Setter____________________________________________//

// 초기화하지 않으면 자동 0값으로 초기화된다.

// 단, 객체형 변수는 초기화하지 않으면 null값으로 초기화된다

public int getYear() {

return year;

}


public void setYear(int year) {

this.year = year;

}


public int getMonth() {

return month;

}


public void setMonth(int month) {

this.month = month;

}


public int getDay() {

return day;

}


public void setDay(int day) {

this.day = day;

}

}





public class MyMain {


public static void main(String[] args) {


// 오버로딩한 생성자를 호출

MyDate date = new MyDate(2014, 7, 17);

// 날짜 값 출력.

System.out.println(date.getYear());

System.out.println(date.getMonth());

System.out.println(date.getDay());


}


}



'Programming > JAVA' 카테고리의 다른 글

JAVA 배열 기초 예문  (0) 2013.07.19
클래스 변수 정리  (0) 2013.07.18
메소드 호출 방식에 따른 분류  (0) 2013.07.17
가변인수 (ellipsis) 기초 예문  (0) 2013.07.17
자바 cmd 컴파일  (0) 2013.07.11

package mymain;


public class MyMain {


/*

메소드 호출 방식에 따른 분류

 

1. Call by Name : 이름만.

2. Call by Value : 값을 넘겨서 호출 (Value:기본형)

3. Call by Reference : 참조값을 넘겨서 호출

 

*/

// Call by Name 메서드

static void title(){

System.out.println(":::: 성적관리 :::::");

}

// Call by Value : 값을 넘겨서 호출

static int plus(int a, int b){

return a+b;

}

// Call by Reference : 참조값을 넘겨서 호출

static void title(String str){

System.out.printf(":::: %s :::::\n", str);

}

public static void main(String[] args) {

// 메서드 호출 ////////////////

// Call by Name

title(); 

// Call by Value

int num = plus(1,2); 

System.out.println(num);

//Call by Reference

String str1 = new String("급여관리"); 

System.out.println(str1);


}


}



'Programming > JAVA' 카테고리의 다른 글

클래스 변수 정리  (0) 2013.07.18
생성자 개념 정리 및 생성자 오버로딩 예문  (0) 2013.07.17
가변인수 (ellipsis) 기초 예문  (0) 2013.07.17
자바 cmd 컴파일  (0) 2013.07.11
자바 난수 발생 간단 예  (0) 2013.07.10

package mymain;


public class MyMain {


// ellipsis(가변인수) 기능

// 가변인수는 ... 점점점으로 한다.

// 가변인수 예1

// 인자를 몇개든지 받아들인다.

void intList(Integer...n){

for (int i = 0; i < n.length; i++) {

// 마치 배열 처럼 인덱스로 접근해서 쓴다.

System.out.printf("%5d", n[i]); // %5d는 다섯칸 띄우고 출력하라 의미.

System.out.println(); //개행

}

}

// 가변인수 예2

void nickName(String...name){

// String[] name = {"개똥이"};

for (int i = 0; i < name.length; i++) {

System.out.printf("%5s", name[i]); // %5s는 다섯칸 띄우고 출력하라 의미.

System.out.println();

}

}

public static void main(String[] args) {

MyMain myMain = new MyMain();

myMain.intList(10);

myMain.intList(10,20);

myMain.intList(10,20,30);

//

myMain.nickName("개똥이");

myMain.nickName("개똥이", "삼식이");

myMain.nickName("개똥이", "삼식이", "박명수");

}


}

+ Recent posts