method1 Articles

  1. 2007/01/23 비교 체험 C# VS Java 1 (8)

자바와 C#에서의 동일한 작동을 코드로 알아 볼께요.~~~

우선 C#
using System;
using System.Reflection;
class App
{
    static void Main(string[] args)
    {
        App pr = new App();
        Type type = pr.GetType();
        MethodInfo method = type.GetMethod("Sum");
        if (method != null)
        {
            Console.WriteLine(method.ToString());
            Console.WriteLine(method.Invoke(null, new object[] { 1, 2 }));
        }
    }
    public static int Sum(int i,int j)
    {
        return i+j;
    }
}



 

결과
Int32 Sum(Int32, Int32)
3


 

JAVA
import java.lang.reflect.Method;
public class methodInvoke
{
 public static void main(String[] args)
 {
  Method methods[] = methodInvoke.class.getDeclaredMethods();
  for (int i = 0; i < methods.length; i++)
  {
   if (methods[i].toString().equals("public static int methodInvoke.Sum(int,int)"))
   {
    Integer x = new Integer(1);
    Integer y = new Integer(2);
    try
    {
     System.out.println(methods[i].toString());
     System.out.println("1 + 2의 값--");
     System.out.println(methods[i].invoke(null, new Object[] {x,y}));
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage());
    }
   }
  }
 }
 public static int Sum(int x, int y)
 {
  return x + y;
 }
}



 

결과
public static int methodInvoke.Sum(int,int)
1 + 2의 값--
3


일단 중요했던 점은 자바 코드 작성시 예외처리를 아예 빼고 invoke를 사용하게 된다면 실행이 되지 않았다. ㅡ.ㅡ; 뭐 이건 이클립스로 실행한게 아니라 J#으로 했기에 정확하지 않을 수도 있지 않을까?? ^^;; 그리고 나머지 메소드들도 나오지 않아 딱맞는 메서드를 메서드 명으로 찾았다.

일단 대충 같은 결과에서 본 시점은 C#코드가 더 간단하다는 점이다. 특정 만든 클래스에서 Type을 받고 거기에서 특정 함수를 찾기도 쉽고, 실행도 보다 편리 하다는점. 아무래도 자바가 나온 뒤에 C#이 나왔으니 어쩔수 없나? 아님 내가 자바를 많이 모르니 더 쉬운 방법을 못찾을수도 있었을 것이다.

내가 이 invoke를 이번에 다루는 이유는 내가 지금 보는 소스에서 본 내용이기에 써보았다. ^^ 특정 조건에 따라 함수를 실행 하게 되는데 기존에는 실행 함수중에서 조건 값을 가지고 if else if else ~~ 로 분기를 하였으나, xml문서로 조건 값들에 대한 메서드를 설정하고 if else if 를 사용하지 않고 조건에 맞는 문자열을 찾아 method에 값을 받고 invoke한다. 음..  이 방식이 그렇게 빠른가? 솔직히 잘 모르겠다. 그냥 대충 if else if else 로 구별 해도 상관 없지 않을까? 하는 생각이 들기도 했지만.

앞으로 좌절금지 열심히 아자아자다!!


div>