我想将类CompteBancaire
替换为功能接口,有人可以告诉我该怎么做吗?
以下是代码段,我想在CompletableFuture
和verserArgent
方法中使用retirerArgent
进行异步任务。
package myclasses;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
public class CompteBancaire {
private int numC;
private int nbTraces;
public static int nbComptes;
public double solde;
private String nom;
private String prenom;
private List<Double> tracesComptes = new ArrayList<>();
/**
* @Constructeur non pramétré
*/
public CompteBancaire() {
this.tracesComptes = new ArrayList<>();
nbComptes++;
}
/**
*
* @param numC
* @param solde
* @param nom
* @param prenom
*
* @Constructeur pramétré
*/
public CompteBancaire(int numC, double solde, String nom, String prenom) {
this.numC = numC;
this.solde = solde;
this.nom = nom;
this.prenom = prenom;
this.tracesComptes = new ArrayList<>();
nbComptes++;
}
/**
*
* @return @getters && setters
*
*
*/
public int getNumC() {
return numC;
}
public void setNumC(int numC) {
this.numC = numC;
}
public int getNbTraces() {
return nbTraces;
}
public void setNbTraces(int nbTraces) {
this.nbTraces = nbTraces;
}
public double getSolde() {
return solde;
}
public void setSolde(double solde) {
this.solde = solde;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
/**
*
* @param tracesCompte
*/
public void setTracesCompte(List<Double> tracesCompte) {
this.tracesComptes = tracesCompte;
}
/**
*
* @param montant
* @return
* @throws tp3.ErreurNegatif
* @Methode qui depose de l'argent au compte (versement)
*
*/
public void verserArgent(double montant) throws ErreurNegatif, Throwable {
if (montant > 0) {
solde += montant;
tracesComptes.add(nbTraces, solde);
nbTraces++;
} else {
throw new ErreurNegatif();
}
}
/**
*
* @Methode qui retire de l'argent du compte
*
*/
void retirerArgent(double montant) throws ErreurNegatif {
if (solde - montant > 0) {
solde -= montant;
tracesComptes.add(nbTraces, solde);
nbTraces++;
} else {
throw new ErreurNegatif();
}
}
/**
*
* @return @Methode qui affiche les informations relatives au compte
*
*
*/
public String description() {
return "Titulaire du compte:" + nom + " " + prenom + ", Numéro compte:" + numC + ", Solde:" + solde;
}
}
答案 0 :(得分:0)
功能界面是界面,只有一种方法。你的班级有(1)多于一种方法,(2)包含一个带有正文的方法,这意味着它无法转换为功能界面。当然,您可以创建一个界面然后实现它。
请用英语重写您的代码并编辑您的答案!
public void verserArgent(double montant) throws ErreurNegatif, Throwable {
if (montant > 0) {
solde += montant;
tracesComptes.add(nbTraces, solde);
nbTraces++;
} else {
throw new ErreurNegatif();
}
}
这是您要执行异步的方法。 (我完全不了解你,但我认为这就是你想要做的)。执行此方法异步并没有多大意义,因为它并不昂贵。
CompletableFuture可以简单地实例化并使用其方法complete(T result)
完成。
例如:
public CompletableFuture<Void> verserArgent(double montant) throws ErreurNegatif, Throwable {
CompletableFuture<Void> future = new CompletableFuture<>();
if (montant > 0) {
solde += montant;
tracesComptes.add(nbTraces, solde);
nbTraces++;
future.complete(null);
} else {
throw new ErreurNegatif();
}
return future;
}
同样,这有效,但没有意义。