[英]Constructor a parameter in a method call
這種類型的傳遞構造函數是用Java調用的方法(Class_name是內部類)?
method_name(new Class_name(arguments));
如何在沒有對象實例的情況下傳遞構造函數?
實際上, new Class_name(arguments)
將創建該類的新實例。 構造可能是有用的 - 它比簡潔更簡潔
Class_name instance = new Class_name(arguments);
method_name(instance);
但是你以后無法訪問instance
。
如前所述,您正在傳遞一個新對象。
如果您只想傳遞有關此類的信息,那么您的方法需要將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 );
最后一種方式是非常具體的,我懷疑它實際上是你需要的,無論你認為你可能需要什么。
new創建一個對象,並將其傳遞給該函數。 你沒有傳遞類,你正在傳遞將創建一個對象的那個類的“新”
您沒有傳遞構造函數,實例:
當你這樣做時:
MyClass myClass = new Myclass();
method_name(myClass);
你有一個MyClass
的實例進入myClass
。 然后用myClass
作為參數調用method_name
所以這可以縮短為:
method_name(new Myclass());
這些類型的用例在Decorator設計模式中非常常見,您不需要中間對象。
例:
FileReader fr = new FileReader(filename);
LineNumberReader lnr = new LineNumberReader(fr);
要么
LineNumberReader lnr = new LineNumberReader(new FileReader(filename));
查看來自nio框架的I / O類,以便更好地理解這些類型的用例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.