본문 바로가기

Development/Programming

[Java] 패키지 탐색하기~! Java에서 Reflection을 편리하게? 사용하기 위한 라이브러리가 있다. 아래와 같이 사용하면 된다.~! 1. 라이브러리 추가 org.reflections reflections 0.9.9-RC1 2. 사용법Reflections reflections = new Reflections("my.project.prefix"); Set> annotated = reflections.getTypesAnnotatedWith(SomeAnnotation.class); Reflections reflections = new Reflections("my.package.prefix"); //or Reflections reflections = new Reflections(ClasspathHelper.forPackage("my... 더보기
[Scala] Named Parameters Parameter를 지정해서 값을 넘겨 줄 수 있다. def printName(first:String, last:String) = { println(first + " " + last) } printName("John","Smith") // Prints "John Smith" printName(first = "John",last = "Smith") // Prints "John Smith" printName(last = "Smith",first = "John") // Prints "John Smith" default 값을 정할 수 있다. def printName(first:String = "John", last:String = "Smith") = { println(first + " " + last) } pr.. 더보기
[Java] Class Method 접근 및 사용 tClass는 해당 사용할 함수를 가진 Class 이고 instance는 tClass의 instance이다.그리고 invoke 하면 호출이 되어지고 Paramater도 마찬가지로 class를 넣어주면 된다. 그리고 invoke에 같이 paramater를 넣어주면된다. final Method setTargetNoMethod = tClass.getMethod("set" + modelClassName + "No", Integer.class); setTargetNoMethod.invoke(instance, info.getTargetNo()); 더보기
[Scala] Generic Classes Scala에도 Java처럼 Generic이 있다. 당연히 Java 1.5부터 가능하다 Generic 클래스는class Stack[T] { var elems: List[T] = Nil def push(x: T) { elems = x :: elems } def top: T = elems.head def pop() { elems = elems.tail }} 사용은 그대로 object GenericsTest extends App { val stack = new Stack[Int] stack.push(1) stack.push('a') println(stack.top) stack.pop() println(stack.top)} 결과는 아래와 같이 나온다.971 더보기
[Scala] Sequence Comprehensions yield 키워드를 쓰면 자동으로 리스트를 만들어서 출력하는듯하다. object ComprehensionTest1 extends App { def even(from: Int, to: Int): List[Int] = for (i 더보기
[Scala] Compound Types 자 아래에는 trait 클래스로 Cloneable 과 Resetable이 있다. trait Cloneable extends java.lang.Cloneable { override def clone(): Cloneable = { super.clone().asInstanceOf[Cloneable] }}trait Resetable { def reset: Unit} 아래의 클래스를 활용하는 함수가 있다.def cloneAndReset(obj: ?): Cloneable = { val cloned = obj.clone() obj.reset cloned} 하지만... 함수명으로 명시적으로 표현만 되어있을뿐 다른언어에 대한 제약이 없다. 그래서 문제이다. 이럴때 Compound Types를 활용하자아래와 같이 활용하면.. 더보기
[Scala] Case Classes 사용방법abstract class Termcase class Var(name: String) extends Termcase class Fun(arg: String, body: Term) extends Termcase class App(f: Term, v: Term) extends Term 사용 예제 1Fun("x", Fun("y", App(Var("x"), Var("y")))) 사용 예제 2val x = Var("x")println(x.name) 사용 예제 3val x1 = Var("x")val x2 = Var("x")val y1 = Var("y")println("" + x1 + " == " + x2 + " => " + (x1 == x2))println("" + x1 + " == " + y1 + " =>.. 더보기
[Scala] 맛보기~! (2) - Java 사용하기 import java.util.{Date, Locale} //클래스 지정import java.text.DateFormatimport java.text.DateFormat._ // *은 특수한 키워드로 _ 가 Java에서의 *이다. object FrenchDate { def main(args: Array[String]) { var now = new Date //Java 의 Date 생성 val df = getDateInstance(LONG, Locale.FRANCE) println(df format now) }} df format now 의미는 Java로 표현하면 이것 과 같다. df.format(now) - 모든 것은 Object 이다. Java는 기본자료형이 있지만 Scala의 경.. 더보기
[Scala] 맛보기~! 1. Map 사용법var capital = Map("US" -> "Washington", "France" -> "Paris") capital += ("Japan" -> "Tokyo") println(capital("France")) 2. 재귀 함수 println(factorial(30)) def factorial(x: BigInt): BigInt = if (x == 0) 1 else x * factorial(x-1) 3. Java vs Scala3-1Java의 경우 class MyClass { private int index; private String name; public MyClass(int index, String name) { this.index = index; this.name = name; .. 더보기
Java의 Stack와 Heap 메모리에대해서... 일반적으로 Stack과 Heap 메모리 대해서 조사하게 되면 Stack은 컴파일시 크기가 결정되어 있는 요소들의 저장공간 (예시 : char variable[size])Heap은 런타임시 크기가 결정되는 요소들의 저장공간... (예시 :char *variables = new char[30]) 이런식으로 설명한다. 이런 이야기는 대학교때부터 들은것이고 대략적으로 알고 있었지만....Java는 약간 다르다라고 얼핏들은적이 있지만 거기에 대해 고민을 해본적은 없었는데 갑자기 회의를 하다가 이야기가 나와서 한번 알아봤다. Java에서의 stack과 heap은 다르다~!!!!!! (여기서 참고했습니다.~!) 1. heap메모리가 자바객체를 저장하는 동안 stack에서는 local 변수와 function call을.. 더보기