ジェネリックとデリゲート

ジェネリクス型

  • クラスのメンバを宣言するときに,

public class SomeClass{

	private strig member1;
	private int member2;

	someClass(){
		this.member1="hoge";
		this.member2=7;
	}
}

としてしまうと,member1member2には,それぞれStringintしか使用できなくなる。

  • ジェネリクスを使用すると,メンバ変数の型をインスタンス時に指定することができる。

public class SomeClass<T1, T2>{

	private T member1;
	private T2 member2;

}

public static void main(String args[]){
	SomeClass<String, int> obj = new SomeClass<String, int>();
}

デリゲートについて

  • 匿名関数
    • メソッドの型

// 単なる型
public delegate void TestMethod(String s);

  • 使用方法は,作成した型で変数を作成し使用する。

public delegate void TestMethod(String s);

TestMethod test = delegate(String msg){
	MessageBox.Show(msg)
};

test("test");
test("hoge");
test("fuga");

  • .NETのフォームのイベントハンドラ等で使用されている。
  • 引数を使用しない匿名関数は,Actionという名前で宣言されている。

Action act = delegate(){
	MessageBox.Show("Action");
}

act()

ラムダ式

  • いちいちdelegateを書くのが面倒くさいので,ラムダ式を使用する。

TestMethod test = delegate(String msg){
	MessageBox.Show(msg)
};

TestMethod test = (nsg) => {
	MessageBox.Show(msg)
};

TODO: C#の部分をJavaに置き換え

以上

C#で鍵を作成=> 暗号化 => 複合

C#で鍵を作成=> 暗号化 => 複合

using System;
using System.Text;
using System.Security.Cryptography;

namespace keygenTest
{
class Program
{
static void Main(string[] args)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
String keyword = Console.ReadLine();
byte[] keywordByte = System.Text.Encoding.UTF8.GetBytes(keyword);
byte[] encryptText = rsa.Encrypt(keywordByte, false);
byte[] decryptText = rsa.Decrypt(encryptText, false);
Console.WriteLine("keyword: " + keyword);
Console.WriteLine("keyword(byte)" + Encoding.UTF8.GetString(keywordByte));
Console.WriteLine("encryptText: " + BitConverter.ToString(encryptText));
Console.WriteLine("decryptText: " + Encoding.UTF8.GetString(decryptText));
Console.ReadKey();
}
}
}

 

出力

hogeeee!!!
keyword: hogeeee!!!
keyword(byte)68-6F-67-65-65-65-65-21-21-21
encryptText: 59-30-83-EC-A0-EE-CA-B3-FE-B5-47-3C-50-4D-17-81-43-09-67-4C-E0-05-0C-07-5A-CC-7F-13-08-A9-E4-89-B0-DB-5F-8B-3D-41-F0-08-DD-6B-4F-9D-00-98-1D-88-48-19-B2-88-45-36-05-B3-75-0E-E9-30-86-D0-37-8D-38-B2-88-8C-20-3F-47-AA-F0-6C-13-9B-34-3E-7E-E6-7C-65-DD-F4-8A-7C-AE-BB-DE-3E-1D-D2-67-DE-F1-E0-37-0C-CD-D1-BF-66-6E-0D-41-E0-FE-77-94-65-67-7C-2D-D0-E8-7A-3C-81-BE-3D-67-50-0B-EE-30-9E-0A-76
decryptText: hogeeee!!!

以上