这种类型的传递构造函数对于在Java中调用的方法是什么 (Class_name是内部类)?
method_name(new Class_name(arguments));
如何在没有对象实例的情况下传递构造函数?
答案 0 :(得分:2)
好吧,实际上new Class_name(arguments)
将创建一个新的类实例。构造可能很有用 - 它比
Class_name instance = new Class_name(arguments);
method_name(instance);
但您稍后无法访问instance
。
答案 1 :(得分:1)
如前所述,你传递的是一个新物体。
如果您只想传递有关此类的信息,那么您的方法需要使用Class参数,例如...
public void method_name(Class clz) { ... do something... )
你会这样称呼它......
method_name( Class_name.class);
另一件事就是按字面意思做你想要的就是给构造函数,例如,你可以得到......
Constructor const = Class_name.class.getConstructor( ArgumentType.class, AnotherArgumentType.class, ...);
例如......
Constructor const = Class_name.class.getConstructor( String.class);
...如果你的构造函数接受了一个String
参数。
然后打电话给你的方法...
public void method_name(Constructor constructor) { ... do something... )
...与......
method_name( const );
最后一种方式是非常具体的,我怀疑它实际上是你需要的,无论你认为你可能需要什么。
答案 2 :(得分:0)
new创建一个对象,并将其传递给该函数。你没有传递你正在传递该类的“新”类,它将创建一个对象
答案 3 :(得分:0)
您没有传递构造函数,实例:
当你这样做时:
MyClass myClass = new Myclass();
method_name(myClass);
MyClass
的实例为myClass
。然后用method_name
作为参数调用myClass
所以这可以缩短为:
method_name(new Myclass());
答案 4 :(得分:0)
这些类型的用例在装饰器设计模式中非常常见,您不需要中间对象。
示例:
FileReader fr = new FileReader(filename);
LineNumberReader lnr = new LineNumberReader(fr);
或
LineNumberReader lnr = new LineNumberReader(new FileReader(filename));
查看来自nio框架的I / O类,以便更好地理解这些类型的用例。