java - 解决 java 中缺少模板的问题

标签 java c++ templates generics

在 C++ 中,我像这样围绕 cout 构建了一个小包装器:

template <class T>
void output( T a ){
   if(is_this_enabled==true)
      std::cout<<a<<endl;
   return;
}

当某些类型的输出涌入命令行时,我只需要更改 is_this_enabled 并且当它们不相关时我可以一站式抑制它们。
我是 java 的新手,我开始编写一个类来实现相同的目的。我发现自己在查看教程时发现没有直接模拟 java 中的模板。

是否有更好/更短的方法来完成此操作然后编写随附的 函数 每个 System.out.println() 重载的方法?泛型似乎无法做到这一点。

最佳答案

您可以使用称为自动装箱的功能来做到这一点——当将基元分配给引用类型的变量或字段时,它会转换为该类型的实例(例如 int 变为java.lang.Integer.

由于打印对象的行为意味着调用 toString(),您可以简单地使用一个方法:

void output(Object o){
    if(outputEnabled)
        System.out.println(o.toString());
}

关于java - 解决 java 中缺少模板的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25318651/

相关文章:

python - 如何将变量传递给 django 中的 {% url %} 标签?

PHP Smarty - 获取模板中所有变量的列表?

c++ - 将 typedef 放置在使用类本身作为模板参数的类中是否有效?

java - Spring BeanFactoryAware 和 ApplicationContextAware 有什么区别?

java - 如何计算 ListView 中勾选的复选框的数量

c++ - omp 缩减和 lambda 函数

c++ - 判断一个数字是否是回车数字

java - 使用 Java 代码向 ARFF 添加问号

java - 如何让GridView居于设备中心?

c++ - 为什么在调用 AfxWinInit 时收到警告 C6309?