본문 바로가기

dev/JAVA14

[JAVA] StandardMultipartHttpServletRequest MultipartRequest 를 통해서 파일 업로드 한것을 받을 때는발생하지 않던 Error 가 발생했다. 내용은 다음과 같다. '어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다.' 정학한 원인은 파악하지 못했지만 구글형님에게물어보니 몇가지 해결 방법들이 있었다. 1. library 추가 pom.xml commons-fileupload commons-fileupload 1.5 2. bean 생성 servlet.xml 3. tomcat context 설정 다음과 같은 설정을하니 정상적으로 생성이 되었다. 2023. 3. 11.
[JAVA] 제네릭스 Box 지네릭 클래스, T의 Box 또는, T Box라고 읽는다. T 타입변수, 또는 타입 매개변수(T는 타입문자) Box 원시타입 지네릭 클래스를 생성할 떄는 다음과 같이 진행해야한다. 참조변수와 생성자에 대입된 타입(매개 변수화된 타입)이 일치해야 한다. 일치하지 않으면 에러가 발생한다. Box appleBox = new Box(); -- OK Box appleBox = new Box(); -- Failed 두타입이 상속 관계에 있더래도 마찬가지이다. Apple이 Fruit의 자손이라고 생각하자 Box appleBox = new Box(); -- Fail.. 타입이 다르다. 단, 두 지네릭 클래스의 타입이 상속관계에 있고, 대입된 타입이 같은것은 괜찮다 FruitBox가 Box의 자손이라고 가정하자 .. 2022. 6. 2.
[JAVA] 익명 클래스 익명 클래스란? : >> 익명클래스란 이름이 없는 클래스로써, 객체의 생성및 정의를 동시에 실시합니다. 생성 조건 >> 익명클래스는 자식 클래스로 부모 클래스 또는, 구현 클래스로 생성한다. >> 생성 방법으론 new 부모클래스 or 구현인터페이스() { } 이다. new 부모클래스or구현인터페이스() { //새롭게 정의할 자식클래스 정의 } >> 따라서 생성된 익명의 클래스는 부모클래스 타입으로 참조변수에 대입되거나, 구현한 인터페이스의 참조변수에 대입되어 사용된다. 이렇게 생성한 익명 클래스의 접근성은 참조변수 타입이 부모클래스이므로, 익명클래스(자식클래스)에서 생성한 멤버와, 메서드는 사용불가능 하며, 부모클래스의 메서드를 재정의할 경우 재정의된 메서드로 호출이 된다. ================.. 2022. 5. 31.
[JAVA] 인터페이스의 장점 현재 AA 클래스가 BB클래스의 메서드를 사용하는데 만약에 AA클래스가 BB클래스가 아닌 CC클래스를 사용하려면 >> AA클래스가 변경되어야 한다. main안에서도 해당 매서드 사용하는 곳의 매개변수를 바꿔줘야 한다. 이것을 인터페이스를 사용하게 되면, AA클래스를 변경하지 않고 main메서드에서 사용할 클래스만 바꿔주면된다. 메서드의 선언과 구현을 분리한다. >> 상속 관계에 있으므로 매개변수로 들어가는 I 부분이 I i = new BB(); I i = new CC(); 이 가능하다. 2022. 5. 31.
[JAVA] 인터페이스의 다형성 >> 인터페이스도 구현 클래스의 부모로 취급한다. 현재 Fighter의 클래스가 Unit과 Fightable을 상속 및 구현하고 있다고 하면 이 가능하다. 다형성에서 배웠다시피,, 상속 관계에 있을때 자손의 인스턴스가 부모의 참조변수를 가르킬 수 있다. 즉 Fightable f = new FIghter(); 의경우는 Fighter가 아무리 많은 멤버를 가지고 있더래도 f의 리모컨은 자기가 가지고 있는 멤버밖에 사용하지 못한다 . >> f.move(), f.attack() >> 인터페이스 타입 매개변수는 인터페이스를 구현한 클래스의 객체만 가능 즉 public void attack(Fightable f) {} 의 경우 >> attack 의 매개변수로는 Fightable 을 구현한 클래스의 인스턴스만 올수 .. 2022. 5. 31.
[JAVA] 인터페이스 인터페이스란 ? : 추상 메서드의 집합, 구현된 것이 전혀 없는 설계도, 껍데기(모든 멤버가 public) 추상클래스 인터페이스 차이점. 일반 클래스인데 추상메서드를 가지고 있는 클래스 인터페이스는 구현된게 없는 추상메서드의 집합이다. iv (인스턴스 변수)를 가질 수 없다. 인터페이스에서는 상수와, 추상메서드를 가질수 있다. 이때 상수는 모두 public static final 이 붙으며, 생략이 가능하다 또한 추상메서드도, public abstract 가 항상 붙으며, 생략이 가능하다. JAVA 8이후로 인터페이스에서 default 메서드와, static 메서드도 생성할 수 있다. Interface의 상속: >> 인터페이스의 조상은 인터페이스만 가능(Object가 최고 조상이 아니다) >> 다중상속이.. 2022. 5. 31.
[JAVA] 매개변수의 다형성 1. 다형적 매개변수 >> 조상 타입의 참조변수로 자손 객체를 다루는것 >> 참조변수의 형변환 -> 리모컨 바꾸기 -> 사용할수 있는 멤버의 갯수 조절 >> instanceof 연산자 -> 형변환 가능 여부 체크 -- 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨 줄수 있다. 상품 클래스, 상품 클래스를 상속하는 Tv, Computer, Audio 소비자 클래스가 있을때 void buy(Tv t) --> 라는 매서드가 있다면 buy의 매개 변수로는 Tv 타입만 들어올수 있으므로 Computer나 Audio를 사려면 void buy(Computer c), void buy(Audio a) 매서드가 필요하다 이럴경우 매서드가 너무 많아지고 다루기가 힘든데 이경우는 매개변수.. 2022. 5. 30.
[JAVA] 다형성 / 참조변수간의 형변환 다형성이란? >> 조상 타입 참조변수로 자소나입 객체를 다루는것 객체를 생성할때 참조변수와 생성자의 타입을 동일하게 생성했었는데 Tv t = new Tv(); SmartTv s = new SmartTv(); 다형성이란 객체간 상속 관계가 형성되어 있을때 조상타입의 참조변수 t로 자손 타입의 객체 SmartTv()를 다루는 것이다. Tv t = new SmartTv(); (불일치 해도 OK) > SmartTv s = new SmartTv(); 로 생성할 경우에는 Tv의 멤버 4개와 SmartTv 멤버 2개 총 6개의 멤버를 모두 사용할 수 있다. Tv t = new SmartTv(); 로 생성할 경우는 Tv에는 멤버가 4개 밖에 없기 때문에 SmartTv가 6개를 가지고 있더래도 Tv에는 SmartTv에만.. 2022. 5. 30.
[JAVA] 매개변수(Parameter) , 인수(argument) 코딩을 하면서 매개변수란 말과 인수란 말을 혼용하여 사용하는데 어떻게 다른지 한번 확인해 보자. 현재 옵션을 바꿀수 있는 Option()이라는 매서드를 보면 Option() 안에 String color, String payMethod 를 넣을수 있는데 매개변수란 함수가 정의된 파라미터 String color, String payMethod 자체를 의미한다. 즉 Option의 매개변수는 String 변수 2개가 들어간다는 것이고 그렇다면 인수란? Option이란 매서드를 사용할때 직접 넣는 데이터를 의미한다. 즉 현재 Option이라는 메서드를 사용하여 "Gray", "CheckCard" 를 넣었는데 이 2개 데이터값이 인수이다. 정리하자면 매개변수란 함수를 정의할때 ()안에 넣어야할 데이터의 자료형을 의.. 2022. 5. 30.
[JAVA] 클래스 클래스란 ? 데이터 + 함수를 모아 놓은것. 1. 변수 ? : 하나의 데이터를 저장 할 수 있는 공간 2. 배열 ? : 같은 종류의 데이터를 하나로 저장 할 수 있는 공간 3. 구조체 ? : 서로 관련된 여러 데이터(종류 상관 없이)를 하나로 저장 할 수 있는 공간 4. 클래스 ? : 데이터와 함수의 결합(== 구조체 + 함수) -> 서로 관련있는 데이터와 함수를 묶어 놓은 것이 클래스 클래스 안에서 선언 위치에 따른 변수의 종류 1. 클래스 영역 : iv, cv(static 변수) 2. 메서드 영역 : lv(local Vailable) 변수의 종류 선언위치 생성시기 클래스 변수(cv) 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수(iv) 인스턴스가 생성되었을 때 지역변수(lv) 클래스 영역 이.. 2022. 5. 30.