scala package object

language/scala 2014.11.05 17:00 posted by dev.bistro

스칼라의 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 package object  (0) 2014.11.05
scala의 lazy 비용  (0) 2014.10.21
spray는 멋지군..  (0) 2014.10.20
Enum Type을 Slick 에서 사용하기  (0) 2014.10.07


티스토리 툴바