java泛型数组传参(java泛型参数怎么传入实参)

本篇文章给大家谈谈java泛型数组传参,以及java泛型参数怎么传入实参对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、java泛型完成数组问题,刚学泛型,求帮助2、JAVA怎么初始化泛型数组?3、Java编写一个泛型类,提供一个方法, 要求:给定任意的类型数组,将第0位和最大位置去掉,将数组返回?

java泛型完成数组问题,刚学泛型,求帮助

整数数组的顺序收缩

public static int seqSearch(int[] arr, int first, int last, int target) {

for (int i = first; i last; i++)

if (arr[i] == target)

return i;

return -1;

}

java泛型数组传参(java泛型参数怎么传入实参)

JAVA怎么初始化泛型数组?

首先由于Java泛型的实现,不可以使用如下的代码:

public class GenSetE {

private E a[];

public GenSet() {

a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation

}

}

那么我们如何在保持类型安全的同时实现这一点?

我在Java论坛上看到了这样的解决方案:

import java.lang.reflect.Array;

class StackT {

public Stack(ClassT clazz, int capacity) {

array = (T[])Array.newInstance(clazz, capacity);

}

private final T[] array;

}

在这里,我们需要讨论”checked” and “unchecked”。

Checked:strong typing。GenSet明确知道它包含的对象类型(即它的构造函数是使用Class E参数显式调用的,当方法传递非类型E的参数时,方法将抛出异常。请参阅Collections.checkedCollection。

在这种情况,我们需要这样写:

public class GenSetE {

private E[] a;

public GenSet(ClassE c, int s) {

// Use Array native method to create array

// of a type only known at run time

@SuppressWarnings(“unchecked”)

final E[] a = (E[]) Array.newInstance(c, s);

this.a = a;

}

E get(int i) {

return a[i];

}

}

Unchecked: weak typing。实际上没有对作为参数传递的任何对象进行类型检查。

在这种情况,我们需要这样写:

public class GenSetE {

private Object[] a;

public GenSet(int s) {

a = new Object[s];

}

E get(int i) {

@SuppressWarnings(“unchecked”)

final E e = (E) a[i];

return e;

}

}

请注意,数组的组件类型应该是类型参数的擦除:

public class GenSetE extends Foo { // E has an upper bound of Foo

private Foo[] a; // E erases to Foo, so use Foo[]

public GenSet(int s) {

a = new Foo[s];

}

}

所有的这些都源于Java中泛型一个的特性但也是一个weakness:它是使用擦除实现的,因此除非实施一些显式机制(type-checking),否则“泛型”类不知道它们在运行时创建的类型参数,故无法提供 type-safety。

Java编写一个泛型类,提供一个方法, 要求:给定任意的类型数组,将第0位和最大位置去掉,将数组返回?

package com.xxt.lyh;

import java.util.Arrays;

/**

* 测试类

*

* @author 时间在流

*

* @param TEV 泛型

*/

public class TestTEV {

// 这纯粹是为了用泛型而用,不用都更好。

/**

* 给定一个泛型数组,将数组中的第一个成员和最后一个成员去掉返回。

*

* @param srcArray 原数组,泛型

* @param destArray 存放结果的数组,泛型 如果你会反射的话,说不定可以不用这个参数 但我不知道你会不会,就写简单点吧

* @return 返回结果 其实这个都是多余的,但是为了满足你题目中的要求,我就再把第二个参数返回了

*/

public TEV[] trim(TEV[] srcArray, TEV[] destArray) {

try {

// 如果原数组的成员2,则将原数组除第一个成员和最后一个成员外的所有成员拷贝到目标数组,否则直接返回。

if (srcArray.length 2) {

System.arraycopy(srcArray, 1, destArray, 0, srcArray.length – 2);

}

} catch (Exception e) {

System.out.println(“目标数组长度不够”);

}

return destArray;

}

public static void main(String[] args) {

// 创建原数组。

String[] srcArray = { “a”, “b”, “c”, “d” };

// 创建目标数组。

String[] destArray = new String[2];

// 创建测试类进行测试。

Test test = new TestString();

String[] result = (String[]) test.trim(srcArray, destArray);

System.out.println(Arrays.toString(result));

}

}

java泛型数组传参的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java泛型参数怎么传入实参、java泛型数组传参的信息别忘了在本站进行查找喔。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月31日 23:38:10
下一篇 2024年3月31日 23:46:21

相关推荐

  • c语言定义结构体数组,c语言结构体数组定义和使用

    C语言求助:定义一个学生结构体数组stu[10],结构体类型? 1、所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。结构体可以存储不同的数据类型,将他们互相联系起来。 2、stu在C语言中没有特定的含义,既不是关键字也不是库函数的函数名。可能是编程人…

    2024年5月9日
    4000
  • java平台开发与应用网盘,java应用软件开发

    求java高级培训视频,全套的 很多新朋友接触java,或者是工作需要java语言的朋友,一定在网上要百度这些问题,java下载,java视频教程,java视频教材资料,java视频学习基础,java入门教程,java入门到高级免费资源,java全套教程,java网盘资源。 关于Java教学视频,这里留一个视频资源地址,有众多入门学习免费资源。学习入口限时开…

    2024年5月9日
    3500
  • java怎么画图片,java画图像

    Java画图 画圆一般通过继承JPanel 或者JFrame ,通过调用panel或者frame中的Graphics实例完成画图。 * Graphics这个类的对象就是一只画笔,当某容器调用paint()时就会在该容器中画图。* 当窗口产生时本身就存在一只画笔,我们只需要拿到画笔重写Paint()便可以随心作画。 你的意思是敲代码画折线图?swing,awt…

    2024年5月9日
    2800
  • oracle调用java,oracle调用jar包

    如何在ORACLE中使用JAVA存储过程 1、Java存储过程与一般的JDBC程序有所不同的是:有安全限制,毕竟是在oracle内部运行的,不允许访问操作系统的资源,如文件。 2、在客户端软件开发中使用thin驱动程序 在开发java软件方面,oracle的数据库提供了四种类型的驱动程序,二种用于应用软件、applets、servlets等客户端软件,另外二…

    2024年5月9日
    2700
  • c语言数组元素下标越界,数组下标越界是编译哪个阶段

    C语言数组下标越界问题 初始化赋值的一般形式为:static类型说明符数组名[常量表达式]={值,值……值}; 其中static表示是静态存储类型, C语言规定只有静态存储数组和外部存储数组才可作初始化赋值。下标是从0开始。 以一个简单的一维数组为例:int a[10];这是一个整型的数组a,有10个元素:a[0]-a[9],因为正确的下标应该是从0开始,到…

    2024年5月9日
    4300
  • java学习的电脑,学java配置的电脑

    学java需要什么配置的电脑 1、CPU:计算机的所有操作都受CPU控制,CPU的性能指标直接决定了微机系统的性能指标,目前市面主流的是奔腾、酷睿ii5之类。做软件开发的建议I5及以上显示屏幕:液晶显示器是笔记本电脑中最为昂贵的一个部件。 2、做java程序员的话,基本上四千五以上的电脑(笔记本)都可以,推荐内存大一点,8g就不错,不过一般互联网公司都有配电…

    2024年5月9日
    3200
  • java编程思想答案,java编程思想答案在哪

    安卓java基础面试题安卓java基础 凭着这段时间的学习,今年开学初,投了几个Android开发的实习生职位,基本上都获得了面试机会,技术面问的那些问题,自己在写上面这个软件时都多多少少遇到过,所以基本上都没问题,然后陆陆续续拿到一些offer。 自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转化成 In…

    2024年5月9日
    3600
  • java复制图片,java如何复制一个图片文档

    求一个Java无损压缩图片的示例,把原图片复制到指定目录… 缩小即可。javathumbnails压缩图片占用内存过大的解决办法:打开压缩图网站,点击选择图片压缩按钮。 getSubimage方法是进行图片裁剪。 fileinputstream获取文件流,outputstream输出文件流。关键一点是,记得添加权限,举SD卡读写权限。 些目录是r…

    2024年5月9日
    2700
  • java获取object的值,获取object中的值

    java传过来一个对象后如何得到这个对象的所有属性值? 1、java反射获取属性值是怎样的呢?一起来看下吧:反射获取Java类的所有字段,包括所有父类中的字段。 2、list.add(form)吧!!append() 是StringBuffer的方法吧!如果form是对象,假设form是一个javaBean对象,里面有name属性。你直接用((KeyForm…

    2024年5月9日
    2600
  • java怎判断线程是否结束,java判断线程池是否执行完毕

    java中,一个运行的线程什么状态是它的结束 1、流程创建后未启动会进入NEW状态,启动后进入RUNNABLE状态,执行线程任务,结束线程释放,进入TERMIBATED状态。 2、死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。 3、java中,每个线程都需经历新生、就绪、运行、阻塞和死亡五种状态,线程从新生到死亡的状态…

    2024年5月9日
    3500

发表回复

登录后才能评论



关注微信