如何创建一个Java类,类似于C ++模板类?
如何在Java中编写相应的内容?
// C++ Code template class SomeClass { private: T data; public: SomeClass() { } void set(T data_) { data = data_; } };
class SomeClass { private T data; public SomeClass() { } public void set(T data_) { data = data_; } }
您可能还希望将类本身公开,但这几乎是Java的字面翻译。
C ++模板和Javagenerics之间还存在其他差异,但这些都不是您的示例的问题。
您使用“generics”在Java中执行此操作:
public class SomeClass { private T data; public SomeClass() { } public void set(T data) { this.data = data; } };
维基百科对Java中的generics有很好的描述。
/** * This class is designed to act like C#'s properties. */ public class Property { 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 { 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 gci = new GenericClass (new Integer(5)); System.out.println(gci.getData()); // print 5; GenericClass gcs = new GenericClass (); gcs.setData("abc"); System.out.println(gcs.getData()); // print abc; } }