J'essaie de déterminer si ce que je veux faire est encore possible. J'ai regardé autour et google n'a pas été super utile, au moins dans ce cas précis.Utilisation de méthodes sur des classes anonymes
Voici ce que j'essaie de faire. L'affectation sur laquelle je travaille est conçue pour être exécutée plusieurs fois à partir de la ligne de commande, avec deux ensembles d'arguments possibles: ["CREATE" "cardType"] ou ["VERIFICATION" "accountNumber" "transactionAmout"]. Chaque fois qu'un indicateur "CREATE" est passé, une instance anonyme de la classe est créée - le constructeur crée les différents champs de données associés à la classe, et les écrit dans un fichier, et le programme se ferme. D'accord jusqu'ici. Voici un extrait du constructeur (il y a plusieurs d'entre eux, mais ils sont tous à peu près identiques):
if(issuer.compareTo("AE") == 0)
{
try
{
cardType = "American Express";
firstDigit = 3;
accountNumber = accountNumberGen(firstDigit);
memberSince = new java.util.Date();
limit = setLimit(accountNumber);
output.write(accountNumber + "|" + cardType + "|" +
memberSince + "|" + limit + "\r\n");
}
catch(Exception e)
{
System.out.printf("An unexpected error occured. Sorry.\n"
+ "American Express Constructor.");
System.exit(0);
}
Alors, voici ce que je l'essaie de comprendre. L'étape suivante est le drapeau "VERIFICATION". Si l'indicateur de vérification est passé à partir de la ligne de commande, je dois aller dans le fichier, lire les données qui y sont stockées, apporter des modifications et les réécrire dans le fichier. Encore une fois, d'accord pour l'instant. Voici le problème:
Puisqu'il n'y a aucune instance de la classe, je ne peux pas invoquer des méthodes dans la classe. Cependant, la méthode de vérification n'a pas besoin d'une instance de la classe pour faire son travail - elle traite entièrement les arguments de la ligne de commande, et la lecture/écriture dans le fichier. Alors, comment puis-je invoquer anonymement des méthodes dans une classe? Dois-je créer une autre classe de vérification, ou simplement déplacer la méthode dans ma classe principale? Je suis un peu hésitant à propos de l'un ou de l'autre, parce que l'affectation implique qu'il devrait y avoir une classe qui gère la création et la vérification. Ou, une autre possibilité, est ma logique en abordant ce problème juste imparfait?
Ce code est un travail en cours - exceptions deviendront plus spécifiques et les filestreams ouverts vont être fermés, etc.
Quel constructeur est qu'un extrait de s'il n'y a pas de classe? Je pense que nous avons besoin de quelques détails concernant la structure réelle de l'objet ici. Aussi, quel contrôle avez-vous sur l'un de ces? Il semble que vous devriez utiliser une interface avec de nombreuses classes d'implémentation (ou une super-classe abstraite). – Thor84no
Voici ce que je veux dire par anonyme, je pourrais avoir utilisé à une mauvaise terminologie ... 'public static void main (String [] args) throws Exception { inputValidation (args); Si (args.length == 2) nouveau compte (args [1]) } ' – MikeTheLiar