Faire un include comme en php..mais en java

Bonjour,

j ai une question sur java mais apaprement avec Eclipse ca fonctionne pas.
J’ai un code relativement long.

En fonction d’un IF, ca sera soit un code, soit un autre.

En phph ce que je faisais beaucoup pour éviter d’alourdir la page “maitre”, je faisais:
if (ma condition)
include 1ercode.php
else
include 2emecode.php

es ce possible de faire ca en java?

merci

non

mais précise ce que tu veux faire, on pourra peut etre t’orienter vers une solution.

Bonjour,
en fait si, mais c’est pas très propre, il vaut mieux faire une servlet, puis faire un “forward” sur la JSP.
(et de préférence aucun traitement dans les JSP, juste du code d’affichage.)

il s’agait d’une application non web.
En gros il y aura un fichier de propriété qu il faudra renseignner pour que le programme se comporte correctement.

par exemple l’utilisateur aura le choix entre par exemple
format: page ou format: demi-page

Moi de mon coté je récupère l’état de la propriété “format” et en fonction du choix fait j’ai un code qui doit fonctionner avec page et un autre avec demi-page.

Donc avec un if, et ensuite j’insère le bon code.
Bien sur je pourrais mettre:
if( format==page)
code_java_pour_page
else
code_java_pour_demi_page

mais comme je disais ces codes sont relativement long et pour faciliter les modification, il serait de les mettre chacun dans une page différentes style page.java et demipage.java et de les insérer dans la page maitre.

Ainsi en cas de modif de présentation ou bien ajout d’un 3eme choix, les modifs sont , je trouve, plus simple.

voila :slight_smile:

if (ma condition)
include 1ercode.php
else
include 2emecode.php

Ca n’a jamais été une bonne solution non plus (pas facile de mettre en cache en particulier).

Si tu es bien objet, et bien carré, tu peux faire ça :

interface MachinTraitement {void do();}
class Code1 implements MachinTraitement {void do() {}}
class Code2 implements MachinTraitement {void do() {}}

(une énumération c’est encore mieux si tu es en java 1.5 : )

interface MachinTraitement {void do();}
enum MachinTraitementImpl  implements MachinTraitement {
   Code1 {void do() {}},
   Code2 {void do() {}};
}

Et ensuite, selon que :
if (…) {
MachinTraitementImpl.Code1.do(); // ou new Code1(), etc
} else {
MachinTraitementImpl.Code2.do();
}

Maintenant ça c’est au niveau objet pur…

mais heu…y a pas de solution très simple?

Perso je suis en java 1.6

Le Java est un langage compilé: il n’est ni interprété, ni pré-compilé, alors on ne peut pas inclure de texte pour le faire interpréter comme un source, le langage n’est tout simplement pas conçu comme ça.
Comme c’est un langage objet, tu as de nombreuse possibilité pour extraire du code et le placer ailleurs:

  • dans une autre méthode
  • dans une méthode statique d’un autre classe
  • dans une méthodes d’instance d’une super classe.
    et bien d’autres…

Toutes ces méthodes sont hyper simple, ça revient à chaque fois à partager le code, mais de façon claire, stricte et maitrisée.

( petite remarque: même en C: utiliser les inclusion du précompilateur pour inclure du code source au lieu de déclarations est la pire infamie de la programmation moderne)

C’est marrant, je suis sûr d’avoir posté un truc disant ça, wtf?

Bref, cf. deltree :slight_smile:

j ai pas dit le contraire…mais y a un truc qui me dérange

bon interface et sa déclaration pas de souci

Le if en executant soit l’un soit l’autre classe nickel j ai bien compris aussi…

non ce qui me dérange c est ce “do” ou plutot ce “void do”

c est quoi ca?

En général, on appelle ça une méthode, pourquoi?

Bon, il est vrai que le nom est pas forcément très java compliant (do=mot clef), tu peux remplacer par doSomething() ou quelque chose de plus approprié, c’était juste un exemple.
Edité le 22/08/2007 à 10:25