b

scala package object 본문

language/scala

scala package object

dev.bistro 2014. 11. 5. 17:00

스칼라의 package object는 어떤 모습을 하고 있을까?


package com {

  package sub {

    class klazz  {

      val name = pubValue

    }

  }

  package object sub {

    val pubValue = "A"

    private val priValue = "B"

    def pubMethod() = "C"


  }

}


1. com/sub 폴더 내에는 다음과 같은 파일들이 생성된다.

- klazz.class

- package$.class

- package.class


2. package, package$

$ javap -p package

public final class com.sub.package {

  public static java.lang.String pubMethod();

  public static java.lang.String pubValue();

}

public final class com.sub.package$ {

  public static final com.sub.package$ MODULE$;

  private final java.lang.String pubValue;

  private final java.lang.String priValue;

  public static {};

  public java.lang.String pubValue();

  private java.lang.String priValue();

  public java.lang.String pubMethod();

  private com.sub.package$();

}



- companion object 를 가지는 class 와 유사한 모습으로 생성된다.
- package object의 method와 var 맴버는 public static 으로 생성된다.

'language > scala' 카테고리의 다른 글

Superseded by Akka HTTP  (0) 2017.05.01
FP 비엄격성  (1) 2015.05.18
scala의 lazy 비용  (0) 2014.10.21
spray는 멋지군..  (0) 2014.10.20
Enum Type을 Slick 에서 사용하기  (0) 2014.10.07
Comments