20170711-1

リファレンスの挙動の確認とか、リフレクションとか。

package sample;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Ref {

	public static void main(String[] args) {
		ref();
	}

	public static void test(String str) {
		str = new String("test");
		System.out.println(str);
	}

	public static void ref() {
		Class<?> clazz;
		try {
			clazz = Class.forName("sample.RefSample");
			Method method = clazz.getMethod("run");
			method.invoke(clazz.newInstance());
		} catch (ClassNotFoundException e) {
			throw new RuntimeException(e);
		} catch (NoSuchMethodException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} catch (SecurityException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}
}
package sample;

public class RefSample {
	public void run() {
		System.out.println("RefSample");
	}
}