2009-08-06 7 views
0

En Java, nous pouvons utiliser instanceOf mot-clé pour vérifier la relation isA. Mais est-il possible de vérifier la relation hasA aussi?Est-il possible en java de vérifier has-a-relation?

+1

vous devez définir "hasA" un peu plus clairement - ce n'est pas clair dans quel contexte vous voulez dire - ce pourrait être la modélisation "hasA", ou il se pourrait que l'objet "hasA". Qu'en est-il du code pseudo ou du code réel? – Chii

Répondre

1

Si vous écrivez votre propre méthode pour le faire.

public class Human { 

    private Human parent; 

    .. 
    public boolean hasParent() { 
     return parent!=null; 
    } 

} 
+0

@PJP et @Scharrels, je suppose que cela va marcher pour moi. –

2

Je suppose que vous pouvez le faire avec réflexion, mais je ne vois pas comment ce serait une chose utile à faire dans le contexte de Java. Java est conçu pour être un langage de programmation, pas un langage de modélisation d'objet.

EDIT - Je suppose que vous voulez faire cela à un niveau linguistique ... plutôt que de simplement coder tout un tas de méthodes 'hasA'.

0

Les constructions d'association/d'agrégation simples ne sont pas des éléments de langage, vous les écrivez dans le code de programme. Donc, vous écrivez les méthodes de vérification aussi.

4

Voulez-vous dire que vous voulez vérifier si un objet a une propriété d'un type particulier? Il n'y a pas de façon intégrée de le faire - il faudrait utiliser la réflexion.

Une alternative consiste à définir une interface qui a la propriété appropriée - puis de vérifier si l'objet implémente cette interface en utilisant instanceof.

Pourquoi voulez-vous faire cela? Est-ce seulement de la spéculation, ou avez-vous un problème spécifique en tête? S'il s'agit de la dernière, veuillez préciser: il pourrait bien y avoir une meilleure façon d'aborder la tâche.

+0

en fait, il sera «bon d'avoir» des fonctionnalités. Le point est, supposons que vous voulez exécuter une méthode si le classage a l'objet de Class1 alors vous pouvez le faire facilement s'il y a un mot clé 'ayant' comme 'instanceOf'. Bien que je sois satisfait de la réponse de PJP et Scharrels. –

+0

Je ne peux pas dire que je suis d'accord que ce serait "bon à avoir" pour le moment. Vous devez me montrer un exemple concret où c'est le design le plus élégant * et * où une fonctionnalité de langue supplémentaire le rendrait meilleur. –

1

relation Le Hasa est souvent modélisé comme une variable privée dans une classe:

Public class AClass { 
    private AnotherClass reference; 

    public AClass() { 
    reference = null; 
    } 

    public boolean hasAnotherClass(){ 
    return reference != null; 
    } 

    // getters and setters are left out for readability 

} 

Vous pouvez visualiser et modifier la référence à l'aide d'un getter et un setter. Vous pouvez vérifier la relation en utilisant la méthode hasAnotherClass().

Questions connexes