Utilise non contrôlée ou activités dangereuses
Je reçois un message d'erreur qui dit:
Note: ABag.java utilise non contrôlée ou activités dangereuses.
Je l'ai googlé et trouvé cette post, et faites les modifications que j'ai pensé à supprimer l'erreur, mais j'obtiens toujours l'erreur.
Est-il autre chose que je peux faire pour arrêter de recevoir ce message d'erreur?
public class ABag<Item> implements BagInterface<Item>
{
private ArrayList<Item> bag;
//creates an empty bag
public ABag(){
bag = new ArrayList<Item>();
}
//creates an empty set with initial capacity
public ABag (int initialCapacity){
bag = new ArrayList<Item>(initialCapacity);
}
public boolean add(Item newEntry){
if (newEntry == null)
return false;
else
{
bag.add(newEntry);
return true;
}
}
public boolean isFull(){
return false;
}
public Item[] toArray(){
Item[] temp = (Item[])bag.toArray();
return temp;
}
public boolean isEmpty(){
return false;
}
public int getCurrentSize(){
return bag.size();
}
public int getFrequencyOf(Item anEntry){
int count = 0;
if (!(bag.contains(anEntry)))
{
for (int i=0;i<bag.size();i++)
{
if (bag.get(i) == anEntry)
count++;
}
}
return count;
}
public boolean contains(Item anEntry){
return bag.contains(anEntry);
}
public void clear(){
bag.clear();
}
public Item remove(){
int size = bag.size();
Item removed = bag.remove(size-1);
return removed;
}
public boolean remove(Item anEntry){
return bag.remove(anEntry);
}
}
Vous en remercie d'avance!
- Où est l'avertissement se produit?
- Il y a une grande différence entre un avertissement et un message d'erreur
- Java avertissement sur untypesafe opérations est souvent une erreur d'exécution en attente de se produire, dans mon expérience.
- connexes: Java comment: Générique de la création de la Matrice.
- Comme quelque chose d'un côté, la convention est d'utiliser une seule lettre majuscule pour le type générique; votre utilisation de
<Item>
moqué de moi au début, quand j'étais à la recherche àtoArray
dans l'isolement.
Vous devez vous connecter pour publier un commentaire.
Vous devez activer pelucheuses pour obtenir détaillé des avertissements sur les problèmes spécifiques:
Entre autres choses,
toArray()
est cassé. LeList.toArray()
méthode renvoie un Objet[], pas un tableau de<T>
, de sorte que votre plâtre pour(Item[])
est incorrect et échoue au moment de l'exécution. Vous devriez être en utilisant<T> T[] toArray(T[] a)
.Afin de créer un tableau de type générique (peut-être la plus grande faiblesse de Java génériques), vous devez passer dans la Classe pour le type de cible et d'utiliser la réflexion et de supprimer l'avertissement, comme suit:
L'autre option est de pousser les problème de dos une couche pour le code qui peut être supposé connaître le type correct et de passer un tableau de ce type dans votre
toArray
méthode, tout comme les Collections de l'API n':Comme quelque chose d'un côté, la convention est d'utiliser une seule lettre majuscule pour le type générique; votre utilisation de
<Item>
moqué de moi au début, quand j'étais à la recherche àtoArray
dans l'isolement.Remplacer votre toArray avec ce, afin d'éviter la fonte
Item
.