java - 如何在 Java 中将类型作为方法参数传递

标签 java types

在 Java 中,如何将类型作为参数传递(或声明为变量)?

我不想传递类型的 实例,而是传递类型本身(例如 int、String 等)。

在 C# 中,我可以这样做:

private void foo(Type t)
{
    if (t == typeof(String)) { ... }
    else if (t == typeof(int)) { ... }
}

private void bar()
{
    foo(typeof(String));
}

在 Java 中有没有不传递 t 类型的实例的方法?
还是我必须使用自己的 int 常量或枚举?
还是有更好的办法?

编辑:这是对 foo 的要求:
根据类型 t,它会生成一个不同的短 xml 字符串。
if/else 中的代码会非常小(一两行),并且会使用一些私有(private)类变量。

最佳答案

你可以通过 Class<T> 在。

private void foo(Class<?> cls) {
    if (cls == String.class) { ... }
    else if (cls == int.class) { ... }
}

private void bar() {
    foo(String.class);
}

更新:OOP方式取决于功能需求。最好的选择是定义 foo() 的接口(interface)和两个具体的实现 foo()然后调用foo()关于你手头的实现。另一种方式可能是 Map<Class<?>, Action>您可以调用actions.get(cls) .这很容易与接口(interface)和具体实现相结合:actions.get(cls).foo() .

关于java - 如何在 Java 中将类型作为方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240646/

相关文章:

c# - Java中有没有类似于C#的 'AS'关键字的关键字

java - 如何在其他非 Activity 类Android的 Activity 中插入TextView?

java - 持久化新实体后,如何使用其父实体的信息填充实体中的字段

Java - 对象中的ArrayList

types - 方法错误: `convert` when using types defined in modules in separate files

java - 在 Java 中存储/添加/删除一组简单数据的最佳方法

java - 如何在Java、TCP/IP服务器/客户端模型中使用套接字获取远程IP地址?

types - 从 if 语句分配一个未装箱的闭包

templates - 根据模板参数选择参数类型

postgresql - PL/pgSQL : General Way to Update N Columns in Trigger?