在 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/