Java-如何在方法中创建参数,以接受.class或扩展.class的类?
如何在接受.class或扩展.class的方法中创建参数 我正在创建一个方法,该方法将在.class中执行方法“foe() 这就是为什么我需要一个参数,它将是一个.class,或者它将扩展一个.classJava-如何在方法中创建参数,以接受.class或扩展.class的类?,java,eclipse,class,Java,Eclipse,Class,如何在接受.class或扩展.class的方法中创建参数 我正在创建一个方法,该方法将在.class中执行方法“foe() 这就是为什么我需要一个参数,它将是一个.class,或者它将扩展一个.class class B extends A{} //And abstract class A{} 这不适用于A类,但适用于B类: public void test(Class<? extends A> arg){} public void test(A arg){} 谢谢你的帮助!:
class B extends A{}
//And
abstract class A{}
这不适用于A类,但适用于B类:
public void test(Class<? extends A> arg){}
public void test(A arg){}
谢谢你的帮助!:) 向您传达此信息的最后努力:
您现在有以下选项
public void testClass(Class<? extends A> arg) {}
public void testInstance(A arg) {}
...
testInstance(new A()); // works
testInstance(new B()); // works
testClass(A.class); // works
testClass(B.class); // works
公共void测试类(是我吗?我不知道你的问题是什么,也不知道你在问什么。你想把A和B对象传递到你的方法中还是A和B类中?这个问题看起来是一个不清楚的类型问题,你想告诉我们更多关于你的整体问题,并展示具体的真实代码,而不是某种类型的代码。中间的代码是IPET不编译,第三个代码段完全按照您的要求执行,您可以传入A或B实例。或者,第二个代码段应在替换后工作)
使用
@HovercraftFullOfEels是的,这不起作用,但我仍然不确定他说的是传递实际的类引用还是这些类的实例。我的意思是第三个适用于类的实例,第二个适用于类的实例。@PiotrOsada你一直使用一个非常错误的术语逻辑。A A=new A();
:定义变量A
,该变量是A的实例。您可以将A
传递给方法foo(A)
。如果b
是用b=new b()定义的,您也可以将b
传递给该方法;
,因为B扩展了A,B
因此是A
的一个实例。你不能传递A.class,也不能传递B.class,因为A.class是类的一个实例(唯一的实例)。类型类和类型A是完全不同的东西。没有“扩展A.class”这样的事情,因为A.class不是一个类型。它是一个对象。请使用它来提供应该运行的实际示例。我必须对此进行投票,因为它确实回答了所有问题(令人困惑)OP到目前为止发布的问题,我感谢您在这一令人沮丧的努力中所做的努力。不幸的是,OP似乎实际上想要一个接受列表和列表的方法。用列表替换类回答了他的问题。
public <T extends A> void testInstanceGen(T arg) {}
public <T extends A> void testClassGen(Class<T> arg) {}
...
testInstanceGen(new A()); // works
testInstanceGen(new B()); // works
testClassGen(A.class); // works
testClassGen(B.class); // works