Frudy
7k
2019-06-07 17:53:53 작성 2019-06-07 18:09:29 수정됨
1
359

어떻게... interface를 인스턴스화 할수있는거죠?


Spring 파일 업로드중에 본 코드입니다.


그리고, MultipartHttpServletRequest도... new로 생성하는 코드가 구글링하다 봤어요..

문제는 둘 다 interface입니다.


인터페이스는 인스턴스화할수없잖아요??
(추상클래스는 상속받는 하위클래스의 생성자에서 인스턴스화가 된다지만...)


직접 적어봐도 에러가 안나길래 하도 신기해서

"interface instantiate" 라고 검색해서 읽어보고,

"new MultipartRequest()" 라고 검색해서 읽어보고,


원하는내용을 못찾았습니다.


다른내용)

1. interface를 인스턴스화 할수있는게 아니고, 익명구현객체를 만드는 것입니다.

>> 저건 익명구현객체도 아니에요.


2. 

1번을 F3누르면 public interface MultipartRequest소스로 가는대,

2번을 F3누르면 public class Object소스로 갑니다.

?? 생성자를클릭했는대 Object소스로 가는것도 신기하네요...


어떻게 이 사실을 받아들여야하나요?

0
  • 답변 1

  • dkb
    2019-06-07 18:38:53

    anonymous inner class 입니다.


    public class DemoApplicationTests {
    
      public interface TestInterface {
        void test();
      }
    
      public class TestImple implements TestInterface {
    
        @Override
        public void test() {
          System.out.println(this.getClass().getName());
        }
      }
    
    
      @Test
      public void className() {
        TestInterface test1 = new TestInterface() {
    
          @Override
          public void test() {
            System.out.println(this.getClass().getName());
          }
        };
        test1.test();
    
        TestInterface test2 = new TestImple();
        test2.test();
    
        TestInterface test3 = new TestImple() {
          @Override
          public void test() {
            System.out.println("Override!!!");
            super.test();
          }
        };
        test3.test();
    
      }
    
    }
    


    결과값에서 인스턴스화된 class name을 비교해보세요

  • 로그인을 하시면 답변을 등록할 수 있습니다.