Laissez certains
et y
.
Est
toujours les mêmes que
?
Si non, quelles sont les différences ?
Laissez certains
et y
.
Est
toujours les mêmes que
?
Si non, quelles sont les différences ?
Les deux réponses sont dans le stade, mais ce n'est une réponse complète.
MyClass.class.isInstance(obj)
est pour vérifier une instance. Elle renvoie vrai si le paramètre obj est non nulle, et peut être jeté à l' MyClass
sans soulever un ClassCastException
. En d'autres termes, obj est une instance de l' MyClass
ou de ses sous-classes.
MyClass.class.isAssignableFrom(Other.class)
retournera true si MyClass
est le même, ou d'une super-classe ou superinterface de, Other
. Other
peut être une classe ou une interface. Il répond vrai si Other
peut être converti en MyClass
.
Un peu de code pour illustrer:
public class NewMain
{
public static void main(String[] args)
{
NewMain nm = new NewMain();
nm.doit();
}
public void doit()
{
A myA = new A();
B myB = new B();
A[] aArr = new A[0];
B[] bArr = new B[0];
System.out.println("b instanceof a: " + (myB instanceof A));
System.out.println("b isInstance a: " + A.class.isInstance(myB));
System.out.println("a isInstance b: " + B.class.isInstance(myA));
System.out.println("b isAssignableFrom a: " + A.class.isAssignableFrom(B.class));
System.out.println("a isAssignableFrom b: " + B.class.isAssignableFrom(A.class));
System.out.println("bArr isInstance A: " + A.class.isInstance(bArr));
System.out.println("bArr isInstance aArr: " + aArr.getClass().isInstance(bArr));
System.out.println("bArr isAssignableFrom aArr: " + aArr.getClass().isAssignableFrom(bArr.getClass()));
}
class A
{
}
class B extends A
{
}
}
Et la sortie:
b instanceof a: true
b isInstance a: true
a isInstance b: false
b isAssignableFrom a: true
a isAssignableFrom b: false
bArr isInstance A: false
bArr isInstance aArr: true
bArr isAssignableFrom aArr: true
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.