java中如何得到一个数组的class的元素class

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何得到一个数组的class的元素class相关的知识,希望对你有一定的参考价值。

public static void main(String[] args)
Class<?> arrayClass=new String[4].getClass();
Class elementClass=getElementClass(arrayClass);
System.out.println(elementClass.equals(String.class));

public static Class getElementClass(Class arrayClass)
return String.class;

getElementClass改如何写才能保证main传入数组的class的时候返回元素的class

  1、在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。
  2、数组的复制:System.arraycopy()。浅拷贝
  3、数组的排序:Arrays.sort()。
  4、在已排序的数组中查找某个元素:Arrays.binarySearch()。
  5、获取Class的三种方式:
  (1)利用对象调用getClass()方法获取该对象的Class实例;
  (2)使用Class类的静态方法forName(),用类的名字获取一个Class实例;
  (3)运用.class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例。
参考技术A Class<?> arrayClass=new String[4].getClass(); 本来就是一个Class
你这样做有什么意义?

你是不是这个意思?

/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
Object obj[] = new Object[4];
obj[0] = "ABC";
obj[1] = 1;
obj[2] = Runtime.getRuntime();
obj[3] = new ArrayList<Object>();
for(Object o : obj)
System.out.println(getElementClass(o));



private static Class getElementClass(Object o)
return o == null ? null : o.getClass();


运行结果:
class java.lang.String
class java.lang.Integer
class java.lang.Runtime
class java.util.ArrayList追问

我的入参是个Class对象,不是Object

追答

public static Class getElementClass(Class arrayClass)
return arrayClass.getComponentType();

--返回表示数组组件类型的 Class。
看看是不是你想要的!

本回答被提问者和网友采纳
参考技术B 字符串数组的class对象
String[].class
参考技术C 使用getComponentType()可以得到数组元素的class 参考技术D 你不是已经声明数组类型为Class了吗?
直接return Class.class可以吗?追问

方法的要求是
入参是一个数组的Class
出参是数组里面元素的Class
例如入参是String[].class
出参是String.class

追答

原来是要那个~

java如何删除掉数组中的某个元素??

比如一个数组:String arrays="1","2","3","5",“6”;
for(String s:arrays)
if(s.equals("2"))
//移除掉元素2



String str = dianjia2,wang,dianjia;
String str1 = dianjia2,dianjia;
如上面两个字符串,如何根据str1的字段来删除str中相同的字段,最后得到的结果是wang.
解决代码:
public static void main(String[] args)
String[] a = new String[]"1","5","3","7";
String[] b = new String[]"2","3","4";
String[] arrResult = arrContrast(a, b);
for (String strResult : arrResult)
System.out.println("最后的结果:----------->" + strResult);



//处理数组字符
private static String[] arrContrast(String[] arr1, String[] arr2)
List<String> list = new LinkedList<String>();
for (String str : arr1) //处理第一个数组,list里面的值为1,2,3,4
if (!list.contains(str))
list.add(str);


for (String str : arr2) //如果第二个数组存在和第一个数组相同的值,就删除
if(list.contains(str))
list.remove(str);


String[] result = ; //创建空数组
return list.toArray(result); //List to Array
参考技术A String[] arrays="1","2","3","5","6";
String[] tempArr = new String[arrays.length];
int i = 0;
for(String s:arrays)
if(!s.equals("2"))
tempArr[i] = s;
i++;


for(int j = 0; j < tempArr.length; j++)
System.out.println(tempArr[j]);


// 数组本身是不可以移除元素的 但可以通过中间变量来实现数组的移除
参考技术B 数组是不可以进行删除的
你可以转换成为 ArrayList 然后进行删除 然后再返回一个数组
参考技术C 设成null,从后往前移一位 参考技术D public static void main(String[] args)
String[] arrays="1","2","3","5","6";
for (int i = 0; i < arrays.length; i++)
if("2".equals(arrays[i]))
//移除掉元素2
for (int j = i+1; j < arrays.length; j++)
arrays[i]=arrays[j];




本回答被提问者采纳

以上是关于java中如何得到一个数组的class的元素class的主要内容,如果未能解决你的问题,请参考以下文章

java中如何求一个数组中元素的和.

java数组如何循环添加元素

java如何删除掉数组中的某个元素??

java如何删除掉数组中的某个元素??

在JAVA中如何从数组中删除一个元素

java如何通过反射获取包中所有的类?