これに相当するものをJavaでどのように書くのですか?
// C++ Code
template< class T >
class SomeClass
{
private:
T data;
public:
SomeClass()
{
}
void set(T data_)
{
data = data_;
}
};
class SomeClass<T> {
private T data;
public SomeClass() {
}
public void set(T data_) {
data = data_;
}
}
また、クラス自体をパブリックにしたいと思うかもしれませんが、それは文字通りJavaへの変換です。
C++テンプレートとJavaジェネリック)の間には他の違いがありますが、これらの例のどれもあなたの例にとって問題ではありません。
Javaでこれを行うには、「ジェネリック」を使用します。
public class SomeClass<T> {
private T data;
public SomeClass() {
}
public void set(T data) {
this.data = data;
}
};
ウィキペディアには Javaでのジェネリック の適切な説明があります。
/**
* This class is designed to act like C#'s properties.
*/
public class Property<T>
{
private T value;
/**
* By default, stores the value passed in.
* This action can be overridden.
* @param _value
*/
public void set (T _value)
{
value = _value;
}
/**
* By default, returns the stored value.
* This action can be overridden.
* @return
*/
public T get()
{
return value;
}
}
public class GenericClass<T> {
private T data;
public GenericClass() {}
public GenericClass(T t) {
this.data = t;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
// usage
public static void main(String[] args) {
GenericClass<Integer> gci = new GenericClass<Integer>(new Integer(5));
System.out.println(gci.getData()); // print 5;
GenericClass<String> gcs = new GenericClass<String>();
gcs.setData("abc");
System.out.println(gcs.getData()); // print abc;
}
}