1.TestMakePair2.java

package javacore.chapter8;

import java.util.function.Supplier;

public class TestMakePair2 {

public static void main(String[] args) {

// 1.接受Suppier--它是一个函数式接口。表示无参数且返回类型为T的函数。

/**

* 因为不能实例化类型变量,如:

* public Pair2 {first = new T();second = new T();}

* 所以最好的方式是让调用者提供一个构造器表达式.形式如下:

* @param constr

* @return

*/

Pair2 pair2 = Pair2.makePair(String::new);

System.out.println(pair2.getFirst().length());

/**

* public void makeT(){

2.传统的方式是通过Class.newInstance方法来构造泛型对象.

但由于细节过于复杂,T.class是不合法的.它会被擦除为Object.class.如下:

Illegal class literal for the type parameter T

T.class.newInstance();

}

* 3.

* T.class是不合法的,但若API設計為如下形式卻可以

* reason:因為String.class是Class的一個实例.

*/

Pair2 pair = Pair2.makePair(String.class);

}

}

class Pair2 {

private T first;

private T second;

public T getFirst() {

return first;

}

public void setFirst(T first) {

this.first = first;

}

public T getSecond() {

return second;

}

public void setSecond(T second) {

this.second = second;

}

public Pair2(T first, T second) {

this.first = first;

this.second = second;

}

public static Pair2 makePair(Supplier constr) {

return new Pair2<>(constr.get(), constr.get());

}

/**

* Cannot infer type arguments for Pair2<>

* 当函数头返回值为Pair时,无法推断,改为Pair2后可以推断.

* @param c1

* @return

*/

public static Pair2 makePair(Class c1){

try {

return new Pair2<>(c1.newInstance(),c1.newInstance());

} catch (InstantiationException | IllegalAccessException e) {

return null;

}

}

}

java无法实例化类型_20.不能实例化类型变量相关推荐

  1. java 不能实例化类型_java不能实例化类型

    8.String类对象的两种实例化方式_计算机软件及应用_IT/计算机_专业资料.Java8面向对象编程视频课程 1. 课程名称:String 对象的两种实例化方式 2.知识点 2.1....... ...

  2. java无法实例化类型_java – 无法实例化泛型中的类型

    我有这门课 public class Tree { //List of branches for this tree private List> branch = new ArrayList&g ...

  3. java无法实例化类型_关于java:无法实例化类型List

    本问题已经有最佳答案,请猛点这里访问. 我有以下代码: List product = new List(); 错误: Cannot instantiate the type List Product是 ...

  4. Java 8函数式编程:延迟实例化

    单例通常会延迟实例化自己,有时,如果对象足够重,则可以延迟实例化类字段. 通常,在走惰性路线时,getter方法(或accessor )必须具有一段代码,该代码块在返回对象之前检查对象是否已实例化(如 ...

  5. Class java用法,java中Class的三种实例化

    1.调用Object类中的getClass()方法:import java.util.Date; public class ReflectTest3 { public static void main ...

  6. 小豹子带你看源码:Java 线程池(二)实例化

    承上启下:上一篇文章小豹子讲了我为什么想要研究线程池的代码,以及我计划要怎样阅读代码.这篇文章我主要阅读了线程池实例化相关的代码,并提出了自己的疑问. 3 千里之行,始于实例化 3.1 先创建一个线程 ...

  7. JAVA语言规范 JAVA SE 8 - 类型、值和变量

    JAVA语言规范 JAVA SE 8 - 类型.值和变量 类型和值的种类 简单类型和值 整数类型和值 整数操作 浮点数类型.格式和值 浮点数操作 boolean类型和布尔值 引用类型和值 对象 Obj ...

  8. java double 运算精度问题_关于java中Double类型的运算精度问题

    如果我们编译运行下面这个程序会看到什么? public class Test{     public static void main(String args[]){         System.o ...

  9. 不能实例化抽象类抽象类不能实例化

    在c++和java中我们会定义很多类,但是我们会遇到在对类进行new实例化时会遇到"不能实例化抽象类"或者"抽象类不能实例化",针对这个问题要首先理解两个内容& ...

最新文章

  1. eclipse从数据库逆向生成Hibernate实体类
  2. linux 权限属性,linux 文件或目录的权限和属性
  3. c语言安卓贪吃蛇代码下载,C语言贪吃蛇代码
  4. java 根据类名示例化类_Java即时类| plusMillis()方法与示例
  5. 单缸发动机扭矩动力学计算:理论计算virtual.lab motion仿真
  6. python编程胡牌将是什么意思_python麻将和牌算法
  7. 在linux下编译android下的opencv,使用cmake的方法
  8. hibernate dynamic-update=true属性不起作用原因(转载)
  9. 【9.4】socket模拟http请求
  10. linux rsync配置文件参数详解
  11. php禁止上传,PHP禁止某些类型的上传文件_PHP教程
  12. 如何手工制作html网站地图,网站地图制作_sitemap自动生成方法详解
  13. 颜色偏差裙子测试软件,蓝黑/白金裙子告诉你视觉误差到底有多大?——一条裙子引发的全民纠结...
  14. mysql的安全性实验报告_数据库安全性与完整性实验报告
  15. 史上最全的常用开发工具类收集(持续更新中)
  16. python 比较数字大小_Python:整数比较大小和输出 | 学步园
  17. 培训机构靠谱吗?|猿代码科技
  18. 建立反脆弱的投资体系,寻找风险收益不对称
  19. 作业:摄氏度转为华摄氏度(勿喷)
  20. 新西兰计算机预科学费,2018年新西兰ACG预科课程介绍(含学费、开学时间)

热门文章

  1. node.js+uniapp计算机毕业设计安卓养老管理APP(程序+APP+LW)
  2. 自动驾驶仿真——腾讯(00700)发布自动驾驶仿真平台TAD Sim 2.0,加速自动驾驶产业布局
  3. 点石互动--zac之:SEO教程写作计划
  4. 查看linux服务器操作日记,linux服务器系统如何查看日志?
  5. C++实验八:魔方问题
  6. 网络安全方面学习笔记(持续更新...)
  7. 自动填写个人信息(问卷星)
  8. java连连看游戏设计与实现
  9. 伊吹萃香 (Standard IO)
  10. log4net配置经验教训