gpt4 book ai didi

java - Java数组类的成员

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:46 25 4
gpt4 key购买 nike

Reflexion API 表明任何 Java 数组类都实现接口(interface) java.lang.Cloneable 和 java.io.Serializable。它没有声明任何成员。

我的问题是:

  • 这个“长度”是在哪里定义的?

  • 其中 protected 对象 clone() 被公共(public)访问覆盖使用协变返回类型(byte[] 替换 Object)的说明符,因为我们可以直接赋值给一个byte[]吗?

  • 与 Cloneable 和 Serializable 的关联 (IS-A) 在哪里定义?

byte[] 类的访问说明符还包含“abstract final”,它不是 Java 中任何类或方法的合法组合。

    import java.lang.reflect.*;

public class ArrayExplorer {

public static void main(String[] args) {
explore("Current class:", byte[].class);

byte[] bytes = { 65, 'A' };
System.out.println(bytes.length);

byte[] cloned = bytes.clone();
System.out.println(cloned);

}

private static void explore(String msg, Class<?> class1) {
if (class1 == null)
return;

System.out.println("**************************************\n" + msg
+ Modifier.toString(class1.getModifiers()) + " " + class1);

// if (class1 == Object.class)
// return;
Field[] fields = class1.getDeclaredFields();
for (Field field : fields) {
System.out.println(field);
}

Method[] methods = class1.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method);
}

explore("Superclass:", class1.getSuperclass());
explore("Classes:", class1.getClasses());
explore("ComponentType:", class1.getComponentType());
explore("DeclaredClasses:", class1.getDeclaredClasses());
explore("DeclaringClass:", class1.getDeclaringClass());
explore("EnclosingClass:", class1.getEnclosingClass());

if (!class1.isInterface()) {
explore("Interfaces:", class1.getInterfaces());
}

}

private static void explore(String msg, Class<?>[] classes) {
if (classes == null || classes.length == 0)
return;
System.out.println(msg);
for (Class<?> class1 : classes) {
explore("", class1);
}
}
}

最佳答案

Java文档

getDeclaredMethods

返回一个 Field 对象数组,反射(reflect)由该 Class 对象表示的类或接口(interface)声明的所有字段。这包括公共(public)、 protected 、默认(包)访问和私有(private)字段,但不包括继承字段。返回的数组中的元素未排序且未按任何特定顺序排列。 如果类或接口(interface)未声明任何字段,或者如果此 Class 对象表示基本类型、数组类或 void,则此方法返回长度为 0 的数组。

getDeclaredMethods

返回一个 Field 对象数组,反射(reflect)由该 Class 对象表示的类或接口(interface)声明的所有字段。这包括公共(public)、 protected 、默认(包)访问和私有(private)字段,但不包括继承字段。返回的数组中的元素未排序且未按任何特定顺序排列。 如果类或接口(interface)未声明任何字段,或者如果此 Class 对象表示基本类型、数组类或 void,则此方法返回长度为 0 的数组。

关于java - Java数组类的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11573128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com