我想做一些java對象的序列化。爲此,我想實例化(對我來說)未知的類,它可能沒有默認的構造函數。因爲我不知道應該如何調用其他構造函數(我可以知道參數,是的,但那不是很有用),我想創建一個類的「空白」實例。是否有可能在不調用任何構造函數的情況下實例化一個類?
之後我會使用反射來設置它的屬性。
這是不是有可能?
我想做一些java對象的序列化。爲此,我想實例化(對我來說)未知的類,它可能沒有默認的構造函數。因爲我不知道應該如何調用其他構造函數(我可以知道參數,是的,但那不是很有用),我想創建一個類的「空白」實例。是否有可能在不調用任何構造函數的情況下實例化一個類?
之後我會使用反射來設置它的屬性。
這是不是有可能?
總之,沒有。
但是,你可以調用許多不同的方式構造。它可能是一個「默認」構造函數,或者實際上並未在代碼中表達的構造函數,或者是在執行其他項目時(如反序列化)的內部構造函數。
構造函數返回一個值,並且由幾個重要的內部的步驟。
<init>(...)
方法被調用(從事物的編程方面,這就是人們覺得作爲一個構造函數方法,typcially書面public Object(...) { ... }
的)。所以構造不僅僅是你調用的代碼,它是對象創建的實現。您可以通過各種方式避免提供方法,但建設所需的內部操作並不是真正可以跳過的。如果他們是,那麼你會缺乏對象引用。
它使用不安全類是可能的。此外,還有可能通過這個sun.x類獲得「constructorForSerialization」
ReflectionFactory.getReflectionFactory()。newConstructorForSerialization(clazz,c);
由於@SotiriosDelimanolis說這是不可能的。這部分地允許類作者控制它們類的實例如何實例化,例如,在創建單例對象時經常使用在類上有私有構造函數。 – Taylor
你想要反序列化什麼樣的對象? –
它也是通過序列化完成的。 –