首页
学习
活动
专区
工具
TVP
发布

JAVA_静态泛方法及静态泛成员变量

参考链接: Java中的静态方法与实例方法 #1.泛类中的静态方法不能使用类的泛,而应该将该方法定义为泛方法  1.错误示范:  class demo{     public static...正确示范:  class demo{     public static T show(T temp) {         return temp;     } }  3.原因:     在java...就泛类而言,类实例化时才能传递真正的类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛还没有传递真正的类型参数时,静态方法就已经加载完成。显然,静态方法不能使用/访问泛类中的泛。 ...这和静态方法不能调用普通方法/访问普通变量类似,都是因为静态申明与非静态申明的生命周期不同。 ...#2.不能定义静态泛变量  1.原因:  由于静态变量java程序一运行时就已经被载入内存,而此时它的类型无法确定,而开辟空间必须知道类型,两者矛盾。

3.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

字节码层面,解析 Java 布尔的实现原理

最近在系统回顾学习 Java 虚拟机方面的知识,其中想到一个很有意思的问题:布尔在虚拟机中到底是什么类型?...于是我们使用 javac 命令得到它的 class 字节码文件: javac Foo.java 字节码文件都是十六进制的字符集合,我们一般可以用 javap 命令来实现反汇编工作。...点击图片可以看到每一个字节码指令的详细解释 其实这几行的逻辑对应下面这块源码: if(flag){ System.out.println("Hello, Java!")...其实还有一个方法可以很直观地看出布尔是使用整型表示的,那就是将 Foo.jasm 文件恢复成 class 文件。...你会发现原来是布尔变量,现在变成了整型。原来的 true 现在是 1 了。 总结一下,其实布尔Java 虚拟机是用整型表示的,true 用 1 表示,false 用 0 表示。

73420

Java 字节

OutputStream 此抽象类是表示输出字节流的所有类的超类。...输出流接受输出字节并将这些字节发送到某个接收器 FileOutputStream 实现 BufferedOutputStream 缓冲,过设置这种输出流,应用程序就可以将各个字节写入基础输出流中,而不必为每次字节写入调用基础系统...InputStream 此抽象类是表示字节输入流的所有类的超类。 FileInputStream 用于读取诸如图像数据之类的原始字节流,要读取字符流。...BufferedInputStream 读取或跳过流中的各字节时,必要时可根据所包含的输入流再次填充该内部缓冲区,一次填充多个字节。 1.实现数据的换行?...文件,并该为.jad文件 把视频名全部重命名 请大家把E:\java目录下所有以java结尾的绝对路径输出控制台 A:封装路径 B:获取该文件下所有文件或者文件夹的File数组 C:遍历File数组得到每一个

47520

java字节

我们都知道Java字节码是JVM所使用的指令集。java字节码可以分为如下几类: 操作数栈   Java 方法的栈桢分为操作数栈和局部变量区。...如下代码生所的字节码: ? dup pop 指令常用于舍弃调用指令的返回结果。...Idc加载常量池中的例子 将局部变量区的值加载到操作数栈的指令   Java 虚拟机将局部变量区当成一个数组,依次存放 this 指针(仅非静态方法),所传入的参数,以及字节码中的局部变量。...局部变量表的字节码 iinc M, N指令,(其中 M为正整数,N为整数),用于操作局部变量区。...表求的含义为:将局部变量数组的第 M 个单元中的 int 值增加 N,常用于 for 循环中自增量的更新。字节码如下图所示: ?

1.1K20

Java——Java

Java5改写了集合框架中的全部接口和类,为这些接口、类增加了泛支持,从而可以在声明集合变量、创建集合对象时传入类型实参。...4、泛方法: 前面介绍了在定义类、接口时可以使用泛形参,在该类的方法定义和成员变量定义、接口的方法定义中,这些泛形参可被当成普通类型来用。...Java的泛基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛中的类型信息的,使用泛的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除。...2、类型擦除后保留的原始类型 原始类型 就是擦除去了泛信息,最后在字节码中的类型变量的真正类型,无论何时定义一个泛,相应的原始类型都会被自动提供,类型变量擦除,并使用其限定类型(无限定的变量用Object...如果类型变量有限定,那么原始类型就用第一个边界的类型变量类替换。

1.2K31

R语言中的因子变量

其实就像整型用来存储整数、字符用来存储字符或字符串类似,因子是用来存储类别的数据类型,因子变量因此是离散变量。...eg:五个用户月均通话次数分别是(15, 1, 63, 19, 122),存储在变量calls_num中。此时calls_num是一个数值变量,有五个值,且理论上每个值的取值范围是0到+∞。...如果想将这个变量进行离散化,根据[0,10] , (10,100] ,(100,+∞]将次数划分为低频、中频、高频三个类别,这时便可建立一个因子变量f_calls_num记录每个用户月均通话次数所在类别...R语言实现 创建因子 R语言中,通过factor()函数建立因子变量。...随硬件能力的提升,人们现在不太关注用因子来提高存储效率,但R保留了这个方式。 2、因子变量为离散变量,可通过定义因子变量区分离散变量

4K20

java

Java5以后,Java引入了“参数化类型”的概念,允许程序在创建集合时指定集合的类型,这就是我们今天要讲的泛。 我们将上面的代码稍微做一下修改,如下图所示: ?...我们发现上面的警告没有了,这时候list集合中只能存放String类型的变量,如果存放其他类型的变量,编辑器则会报错。...深入泛: 所谓泛,就是允许在定义类、接口、方法时使用类型形参,这个类型形参(或叫泛)将在声明变量、创建对象、调用方法时动态地指定(即传入实际的类型参数,也可称为类型实参)。...Java5改写了集合框架中的全部接口和类,为这些接口、类增加了泛支持,从而可以在声明集合变量、创建集合对象时传入类型实参,这就是在前面程序中看到的 List和 ArrayList<String...泛方法: 泛方法的定义: ? 泛方法的调用: ?

52320

Java

Why:为什么要引入泛Java 集合框架中的数据元素,是Object类型,也就是可以是任意类型。 在使用集合数据时,需要显式地调用 强制类型转换。...您可以(几乎)将其视为源到源的转换,从而将代码的泛版本转换为非泛版本。 因此,即使存在未经检查的警告,Java虚拟机的类型安全性和完整性永远不会受到威胁。...Java语言中引入泛是一个较大的功能增强不仅语言、类型系统和编译器有了较大的变化,以支持泛,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛化的了,这带来了很多好处。...泛的一个主要目标就是提高Java程序的类型安全,使用泛可以使编译器知道变量的类型限制,进而可以在更高程度上验证类型假设。...支持泛Java编译器(例如JDK1.5中的Javac)可以用来编译经过泛扩充的Java程序(Generics Java程序),但是现有的没有使用泛扩充的Java程序仍然可以用这些编译器来编译。

1.2K51

Java

Java技术产生的原因: package cn.mldn.utli; class Point { private Object x ; private Object y ;...如果是采用泛,那么它能够接受的数据类型只能是基本数据类型的包装类表示,不可以引用类型! # 在使用泛类或者接口的时候,没有设置泛的具体类型,会报错。...(如果在没有设置泛的具体类型的时候,所有泛使用Object描述泛的数据类型) # 在JDK1.7后可以简化泛:可以将实例化的泛具体类型的定义省略 —————————— 泛通配符: package...extends 类:设置泛上限,可以在泛声明上和方法参数上使用;         |-- ? extends Number : 意味着可以设置Number或者子类的泛     ~ ?...; } } ------------------------------- 泛方法:   泛方法不一定定义在支持泛的类中。

55310

Java

目录 概述 使用 泛类&泛接口 定义泛 使用泛的确定 泛方法 定义泛 使用泛的确定 泛上限&泛下限 泛限定的概念 泛上限 泛下限 注意事项 概述 ​ 泛可以把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型...注意:泛只能是引用数据类型。 使用 泛类&泛接口 ​ 泛类和泛接口的用都相同,本篇以泛类为例进行讲解。 ​ 泛类就是把泛定义在类上,用户使用该类的时候,才把类型明确下来 。...定义泛 ​ 在类名后加,在中定义泛,中的内容相当于泛的名字,可以随便写。在泛类中我们可以把这个泛的名字当做一个数据类型来使用。...&泛下限 泛限定的概念 ​ 我们在使用确定泛的时候可以使用任意的引用数据类型去确定。...但是在某些场景下我们要求这个泛必须是某个类的子类或者是某个类的父类。这种情况下我们就需要用到泛上限和泛上限来限制泛的范围。 泛上限 ​ 限制泛必须是某个类或者是其子类。 格式: <?

36910

Java 变量

# Java 变量 变量是程序的基本组成单位 简单的原理示意图 变(变化)量(值)的介绍 概念 变量使用的基本步骤 变量快速入门 变量使用注意事项 程序中+号的使用 数据类型 整数类型 基本介绍 整型的使用细节...浮点类型 基本介绍 说明一下 浮点使用细节 Java API 文档 字符类型(char) 基本介绍 字符类型使用细节 ASCII码(了解) Unicode 编码介绍(了解) 布尔类型:boolean...变量表示内存中的一个存储区域[不同的变量,类型不同,占用的空间大小不同,比如: int 4个字节,double 就是8个字节,先有基本印象,后面说字节] 该区域有自己的名称[变量名]和类型[数据类型]...Java语言提供了八种基本类型。六种数字类型(四个整数,两个浮点),一种字符类型,还有一种布尔。...# 浮点使用细节 # Java API 文档 # 字符类型(char) # 基本介绍 字符类型可以表示单个字符,字符类型是 char,char 是两个字节(可以存放汉字),多个字符我们用字符串

37330

Java - 泛

相关概念: ● ArrayList中的E是类型参数变量(typeVariable,也叫泛参数),除了E之外,也可以是任意标识符。...Java是向前兼容的,泛Java5引入,需要兼容Java5之前的版本,这也是Java需要类型擦除的原因之一。...此外,编译期会在使用泛的地方自动生成类型转换的字节码,所以在使用泛时无需进行强制类型转换。 泛擦除导致的多态冲突 由于泛擦除,会导致运行期的多态冲突。...如果去看泛类的子类字节码文件,会发现每一个使用了泛的被重写的父类方法都多出来一个对应的被bridge修饰的桥方法。...the type E } 泛类的泛参数不能作为静态变量,也不能作为静态方法的返回值 泛类在类实例化时才明确类型,而静态类型是在类加载时就初始化的,此时对于泛类是无法明确泛的具体类型的,所以泛类的泛参数不能作为静态变量

28120

Java

候选人: 好嘞,我们来聊聊泛。首先,泛要解决的最主要的问题就是类型不安全。...泛来了之后,情况就不一样了。...因为Java在1.5之前并没有泛的概念,所以编译器会把所有的泛类型全部擦除掉,在运行时期间不会存在任何泛类型的参数信息。这也是为什么泛类不能有基本类型的参数的原因。...泛方法和泛类有什么区别?泛方法是在普通类中定义带类型参数的方法,而泛类是在定义类本身时指定类型参数。...泛方法更灵活,可以在非泛类上使用。除此之外,泛方法可以有static修饰符,可以在静态方法内使用类型参数。而泛类不能有静态方法和静态属性,原因和前面说的类型擦除有关。3. 泛的上下限是什么?

3330

扫码

加入 开发者社群

领取 专属20元代金券

Get大咖技术交流圈

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券