Ci-dessous est un travail autour de cette restriction.
Le travail consiste à passer un objet titulaire temporaire au constructeur super classe. Ensuite, après que le constructeur de la super classe a fait son travail, donnez une référence à l'objet titulaire temporaire.
Le paramètre delta peut être utilisé pour montrer le principal défaut de cette solution de contournement - et si le constructeur de la superclasse devait utiliser le paramètre.
import java . lang . reflect . * ;
import java . util . * ;
class Father
{
public static void main (String [ ] args)
{
(new Son (args . length > 0)) . run () ;
}
Father (Runnable runnable , boolean delta)
{
super () ;
if (delta)
{
runnable . run () ;
}
}
}
class Son extends Father implements Runnable
{
private static Map < Thread , TempRunnable > temps = new HashMap < Thread , TempRunnable > () ;
private static class TempRunnable implements Runnable
{
private Son son ;
TempRunnable ()
{
super () ;
temps . put (Thread . currentThread () , this) ;
}
public void run ()
{
son . run () ;
}
}
Son (boolean delta)
{
// super (this) ; // the dream
super (new TempRunnable () , delta) ;
temps . get (Thread . currentThread ()) . son = this ;
}
public void run ()
{
System . out . println ("Hello World") ;
}
}
Il est très déroutant de commencer une question avec "parce que". Qu'est-ce que tu veux faire? –
Je ne pense pas que ce soit une question? –
Je ne dois rien faire, laissez-moi savoir pourquoi cette chose – kafka