• 关于 java列表怎么用 的搜索结果

问题

[精品问答]Java一百问第一期

问问小秘 2019-12-01 21:51:20 791 浏览量 回答数 1

问题

荆门开诊断证明-scc

游客5k2abgdj3m2ti 2019-12-01 22:09:00 1 浏览量 回答数 0

问题

关于按钮下拉列表的问题

蛮大人123 2019-12-01 19:58:14 868 浏览量 回答数 1

Java学习路线 26门免费课程

排名第一的编程语言,从事云计算、大数据开发工作必备

问题

如何实现查询结果的树排序?

小旋风柴进 2019-12-01 20:15:42 893 浏览量 回答数 1

问题

【精品问答】Java技术1000问(1)

问问小秘 2019-12-01 21:57:43 34170 浏览量 回答数 10

回答

也许var list = result.data;//获取合同列表这个前面要加一句,使result这个数据json化,也许result这个字符串确实像json格式,但是它还不是json。你再检查一下看看。 http://localhost:8080/Contract/eduwest/foundAll.form这个本身内容是JSON格式的么?如果已经显示list是undefined,说明你传输接受的数据应该就是有问题的吧。如果数据没问题,考虑以$.ajax({},"json");形式调用一下试试? 下载 java调用openamf实例,把取回的结果转换成list或bean. .下载 json2 ajax返回list处理 在jsp页面 遍历 .论坛 怎么用jQuery使用load函数访问Struts2中的Action得到返回结果是List .论坛 c#怎么解析不确定个数不确定名称的json?如下这种格式,我想把里面的多个日期key对应的数组全取出来转换成list .论坛 在线等高手 xfire 中list里面放自定义java bean 用get方法返回bean的值 结果是null 该怎么办啊 . caozhy 推荐了: 用递归能实现一个数组划分的算法么? .苏小喵 推荐了: 请问这是java中的设计模式吗? .shiter 推荐了: RHEL下跑应用,性能和调用CPU内核问题 .苏小喵 推荐了: 从Chat表中,如果UserType是父母,根据UserId 从Parent表中取出Name, .苏小喵 推荐了: 尝试引用已删除的函数??? . .

杨冬芳 2019-12-02 03:03:43 0 浏览量 回答数 0

问题

【Java问答学堂】14期 redis 都有哪些数据类型?分别在哪些场景下使用比较合适?

剑曼红尘 2020-05-07 14:59:45 0 浏览量 回答数 1

回答

面试题 redis 都有哪些数据类型?分别在哪些场景下使用比较合适? 面试官心理分析 除非是面试官感觉看你简历,是工作 3 年以内的比较初级的同学,可能对技术没有很深入的研究,面试官才会问这类问题。否则,在宝贵的面试时间里,面试官实在不想多问。 其实问这个问题,主要有两个原因: 看看你到底有没有全面的了解 redis 有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的 KV 操作; 看看你在实际项目里都怎么玩儿过 redis。 要是你回答的不好,没说出几种数据类型,也没说什么场景,你完了,面试官对你印象肯定不好,觉得你平时就是做个简单的 set 和 get。 面试题剖析 redis 主要有以下几种数据类型: stringhashlistsetsorted set string 这是最简单的类型,就是普通的 set 和 get,做简单的 KV 缓存。 set college szu hash 这个是类似 map 的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在 redis 里,然后每次读写缓存的时候,可以就操作 hash 里的某个字段。 hset person name bingo hset person age 20 hset person id 1 hget person name person = { "name": "bingo", "age": 20, "id": 1 } list list 是有序列表,这个可以玩儿出很多花样。 比如可以通过 list 存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的东西。 比如可以通过 lrange 命令,读取某个闭区间内的元素,可以基于 list 实现分页查询,这个是很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走。 0开始位置,-1结束位置,结束位置为-1时,表示列表的最后一个位置,即查看所有。 lrange mylist 0 -1 比如可以搞个简单的消息队列,从 list 头怼进去,从 list 尾巴那里弄出来。 lpush mylist 1 lpush mylist 2 lpush mylist 3 4 5 #1 rpop mylist set set 是无序集合,自动去重。 直接基于 set 将系统里需要去重的数据扔进去,自动就给去重了,如果你需要对一些数据进行快速的全局去重,你当然也可以基于 jvm 内存里的 HashSet 进行去重,但是如果你的某个系统部署在多台机器上呢?得基于 redis 进行全局的 set 去重。 可以基于 set 玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看俩人的共同好友是谁?对吧。 把两个大 V 的粉丝都放在两个 set 中,对两个 set 做交集。 往期回顾: 【Java问答学堂】1期 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 【Java问答学堂】2期 如何保证消息队列的高可用? 【Java问答学堂】3期 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 【Java问答学堂】4期 如何保证消息的可靠性传输?(如何处理消息丢失的问题?) 【Java问答学堂】5期 如何保证消息的顺序性? 【Java问答学堂】6期 如何解决消息队列的延时以及过期失效问题? 【Java问答学堂】7期 如果让你写一个消息队列,该如何进行架构设计? 【Java问答学堂】8期 es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)? 【Java问答学堂】9期 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊? 【Java问答学堂】10期 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 【Java问答学堂】11期 es 生产集群的部署架构是什么?每个索引的数据量大概有多少? 【Java问答学堂】12期 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 【Java问答学堂】13期 redis 和 memcached 有什么区别?

剑曼红尘 2020-05-07 15:00:02 0 浏览量 回答数 0

问题

具体怎样构建一个有序的键值对关系的数据结构?

蛮大人123 2019-12-01 20:07:04 1025 浏览量 回答数 1

问题

如何一次性获取bucket里超过1000个的object?

soccer 2019-12-01 21:53:17 4243 浏览量 回答数 3

回答

一般出此错误是因为kylin没能连接到hbase;请检查hbase的健康状况,并测试当前shell用户是否有权限创建hbasetable 请检查HBase是否可以正常连接: Causedby:java.lang.IllegalArgumentException:Failedtofindmetadatastorebyurl:kylin_metadata @hbase 相关问题请在邮件列表获得帮助,谢谢。 回复 @社区管理员:最后怎么解决的HBase我通过shell可以链接,并且可以写命令,webui也可以打开其他的链接方式,还没有使用,应该是可以的。你的这个问题是怎么解决的?新人求指导。。。Createnewstoreinstancefailed最后怎么解决的 引用来自“木子简”的评论Createnewstoreinstancefailed最后怎么解决的THINKU!楼主错误怎么解决的,我也遇到相同问题了回复 @社区管理员:请问楼主你是用的哪个版本呢,我用的是HBase1.1.2.2.3.2.0-2950我换了HBase的版本,换成原生的就解决了

爱吃鱼的程序员 2020-06-09 14:56:13 0 浏览量 回答数 0

回答

距离 Java 11 的正式发布已过去一个多月,而 Java 12 也正在赶来的路上。根据此前开源中国发起的一项关于开发者使用的 Java 版本的调查(https://www.oschina.net/question/2918182_2287320)显示,Java 8 仍然是开发者的主流选择,而 Java 11 是 Java 8 之后的首个 LTS 版本,所以有不少开发者表示会选择升级至 Java 11。按照 Java 的发布计划,Java 12 将于明年 3 月推出,那么问题来了,我们是应该采用 Java 12,还是坚持使用 Java 11 呢? 可能你会觉得这是一个无关紧要的问题,但对于那些需要在 JVM 中使用 Java 的开发者,或是比较看重 Java 新特性的开发者,这是一项十分重要的决策。这篇文章将和大家就这个问题进行相关的分析。 Java 发布计划 现在每六个月就会发布一个新的 Java 版本,所以尽管 Java 11 才发布不久,但距离 Java 12 的发布也就剩下不到五个月的时间。作为发布计划的一部分,某些版本会被指定为长期支持版本(LTS),它们会获得四年或更长时间的技术支持和安全补丁。所以这些版本通常会被称为“主要版本” —— 不是因为它们拥有更多的功能特性,而是因为它们具有长期的技术支持。 预计 Java 11 的更新补丁(11.0.1, 11.0.2, 11.0.3 等)将比 Java 8 的补丁(8u20, 8u40, 8u60)更小更简单。因为 Java 11 的更新将更加集中在安全补丁上,不会像 Java 8 的更新那样带来内部的功能增强。因为 Oracle 希望将 Java 12, 13, 14 等这些版本当做是小更新版本,类比成 Java 8 的话,即是 Java 11u20, 11u40。 Oracle 高级员工一再认为像 8u20 和 8u40 这样的更新常常会带来破坏性的变更,但本文作者表示这不是自己的经历,他记得的唯一有破坏性的变化是为 Javadoc 添加了 --allow-script-in-comments,但它也不是 Java 的核心部分。因此,他从不担心升级到最新版本带来的影响 —— 因为这是 Java 平台的核心优势。 下面深入了解一下为什么在旧的发布模式下,升级版本不会导致任何问题。先看一下新旧发布模式之间的差异: Oracle 的官方观点认为:与 Java 7->8->9 相比,Java 9->10->11的升级和 8->8u20->8u40 更相似。 表格清楚地显示新模式下的 Java 版本发布都会包含许多变更,包括语言变更和 JVM 变更,这两者都会对 IDE、字节码库和框架产生重大影响。此外,不仅会新增其他 API,还会有 API 被删除(这在 Java 8 之前没有发生过)。 Oracle 的观点是,因为每个版本仅在前一个版本发布后的 6 个月推出,所以不会有太多新的“东西”,因此升级并不困难。虽然如此,但这不是重点。重要的是升级是否有可能会破坏代码。很明显,从 11 -> 12 -> 13 开始,代码遭受破坏的可能性要大于 8 -> 8u20 -> 8u40。 11 -> 12 -> 13 与 8u20 -> 8u40 等这样的更新主要区别在于对字节码版本的更改以及对规范的更改,对字节码版本的更改往往特别具有破坏性,大多数框架都大量使用与每个字节码版本密切相关的 ASM 或 ByteBuddy 等库。而 8u20 -> 8u40 仍然使用相同的 Java SE 规范,具有所有相同的类和方法,不同于从 Java 12 移动到 13。 除此之外,Oracle 的另一个声明也十分值得我们关注。声明透露出的消息是,如果坚持使用 Java 11 并计划在下一个 LTS 版本(即 Java 17)发布时再进行升级,开发者可能会发现自己的项目代码无法通过编译。所以请记住,Java 新的开发规则现在声明可以在一个版本中弃用某个 API 方法,并在下一个版本中删除它。 采用新版本 Java 的注意事项 在本节中,将概述在采用新版本 Java 之前必须考虑的一些注意事项/风险。 被新版本系列“绑定” 如果采用了 Java 12 并使用新的语言特性或新的 API,这意味着实际上你已将项目绑定到 Java 的新版本系列。接下来你必须采用 Java 13, 14, 15, 16 和 17,并且必须在下一个版本发布后的一个月内采用每个新版本。 使用了新版本,每个版本的使用寿命为六个月,并且在发布后仅七个月就过时了。这是因为每个版本只有在六个月内提供安全补丁,发布后1个月的第一个补丁和发布后4个月的第二个补丁。7个月后,下一组安全补丁会发布,但旧版本不能获取更新。 因此,你要判断自身的开发流程是否允许升级 Java 版本,时间窗口方面会不会太狭窄? 升级的“绊脚石” 实际使用中有很多阻止我们升级 Java 的因素,下面列出一些常见的: 开发资源不足:你的团队可能会非常忙碌或规模太小,你能保证两年后从 Java 15 升级到 16 的开发时间吗? 构建工具和 IDE:你使用的 IDE 是否会在发布当天支持每个新版本?Maven? Gradle 呢? 如果不是,你有后备计划吗?请记住,你只有1个月的时间来完成升级、测试并将其发布到生产环境中。此外还包括 Checkstyle,JaCoCo,PMD,SpotBugs 等等其他工具。 依赖关系:你的依赖关系是否都准备好用于每个新版本?请记住,它不仅仅是直接依赖项,而是技术堆栈中的所有内容。字节码操作库尤其受到影响,例如 ByteBuddy 和 ASM。 框架:这是另一种依赖,但是一个大而重要的依赖。在一个月的狭窄时间窗口内,Spring 会每六个月发布一个新版本吗? Jakarta EE(以前的 Java EE)会吗?如果它们不这样做会怎么样? 云 / 托管 / 部署 你是否可以控制代码在生产环境中的运行位置和方式?例如,如果你在 AWS Lambda 中运行代码,则无法控制。AWS Lambda 没有采用 Java 9或10,甚至没有采用 Java 11。所以除非 AWS 提供公共保证以支持每个新的 Java 版本,否则根本无法采用 Java 12。 如何托管你的 CI 系统?Jenkins, Travis, Circle, Shippable, GitLab 会快速更新吗?如果不是,你会怎么做? 对未来的预测 如果已经阅读了上面的列表,并且你的代码和流程可以应对。这十分好,但更重要的是要明白,你也在限制未来进行改变的能力。例如,你的代码可能今天不在 AWS Lambda 上运行,但未来三年呢? 为采用新版本进行规划 如果正在考虑采用新版本的 Java,建议你准备一份现在所依赖的所有内容的清单,或者可能在未来3年内会依赖的。你需要保证该列表中的所有内容都能正常工作,并与新版本一起升级,或者如果该依赖项不再更新,请制定好计划。作者提供了他的清单: Amazon AWS Eclipse IntelliJ Travis CI Shippable CI Maven Maven plugins (compile, jar, source, javadoc, etc) Checkstyle, 以及相关的 IDE 插件和 maven 插件 JaCoCo, 以及相关的 IDE 插件和 maven 插件 PMD 和相关的 maven 插件 SpotBugs 和相关的 maven 插件 OSGi bundle metadata tool Bytecode 工具(Byte buddy / ASM etc) 超过 100 个 jar 包依赖项 说了这么多,作者当然不是鼓励大家不进行升级,新语言特性带来的好处以及性能增强会让开发者受益,但升级背后的风险也应该考虑进去。 其他第三方产商的声明 Spring 框架已经在视频中表达了对 Java 12 的策略。关键部分是: “Java 8 和 11 作为 LTS 版本会持续获得我们的正式支持,对于过渡版本,我们也会尽最大努力支持。如果你升级到 Java 11,我们非常愿意和你合作,但它们不会获得正式的生产环境支持。因为长期支持版本才是我们关注的重心,对于 Java 12 及更高版本我们会尽最大的努力。” 作为典型软件供应商的一个例子,Liferay 声明如下: Liferay 已决定不会对 JDK 的每个主要版本进行认证。我们将选择遵循 Oracle 的主导并仅认证标记为 LTS 的版本。—— Liferay 博客 640?wx_fmt=png 总结 相信肯定已经有开发团队采用了新版本的 Java,但希望他们是经过思考判断之后做出的决定。除了文章中提到的问题,还会有很多其他在升级前需要思考的因素,欢迎在评论中留下你的看法。

问问小秘 2020-04-29 17:45:51 0 浏览量 回答数 0

回答

还敢用keys *这种指令的,运维没打死你说明他爱你,这个是阻塞命令,搞不好redis会down掉 java不知道怎么写,lrange xxxx 0 -1 是返回整个列表内容,楼上的有点误导 IDE里面那个lrange点不进去不?jredis文档里面应该有用法吧?或许start跟end是个array扔进去的呢?

kun坤 2020-06-07 14:25:57 0 浏览量 回答数 0

问题

IOS获取Object列表问题

shadow1992 2019-12-01 21:04:14 3484 浏览量 回答数 0

问题

eclipse debug引起死机问题? 400 报错

爱吃鱼的程序员 2020-06-01 13:28:11 0 浏览量 回答数 1

问题

驻马店开诊断证明-feu

游客5k2abgdj3m2ti 2019-12-01 22:08:55 3 浏览量 回答数 0

问题

荆门开诊断证明-scc

游客5k2abgdj3m2ti 2019-12-01 22:08:59 3 浏览量 回答数 0

问题

宜昌开诊断证明-yui

游客5k2abgdj3m2ti 2019-12-01 22:08:57 3 浏览量 回答数 0

问题

鄂州开诊断证明-asa

游客5k2abgdj3m2ti 2019-12-01 22:08:58 3 浏览量 回答数 0

问题

十堰开诊断证明-lpt

游客5k2abgdj3m2ti 2019-12-01 22:08:56 3 浏览量 回答数 0

问题

【精品问答】Java必备核心知识1000+(附源码)

问问小秘 2019-12-01 22:00:28 870 浏览量 回答数 1

问题

襄樊开诊断证明-ggc

游客5k2abgdj3m2ti 2019-12-01 22:08:58 3 浏览量 回答数 0

问题

黄石开诊断证明-kku

游客5k2abgdj3m2ti 2019-12-01 22:08:55 3 浏览量 回答数 0

问题

JAVA后台动态拼接查询语句

蛮大人123 2019-12-01 20:01:13 1711 浏览量 回答数 2

回答

什么是java反射机制?我们又为什么要学它?当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。我们认为java并不是动态语言,但是它却有一个非常突出的动态相关机制,俗称:反射。IT行业里这么说,没有反射也就没有框架,现有的框架都是以反射为基础。在实际项目开发中,用的最多的是框架,填的最多的是类,反射这一概念就是将框架和类揉在一起的调和剂。所以,反射才是接触项目开发的敲门砖! 一、Class类什么是Class类?在面向对象的世界里,万事万物皆是对象。而在java语言中,static修饰的东西不是对象,但是它属于类。普通的数据类型不是对象,例如:int a = 5;它不是面向对象,但是它有其包装类 Integer 或者分装类来弥补了它。除了以上两种不是面向对象,其余的包括类也有它的面向对象,类是java.lang.Class的实例化对象(注意Class是大写)。也就是说:Class A{}当我创建了A类,那么类A本身就是一个对象,谁的对象?java.lang.Class的实例对象。那么这个对象又该怎么表示呢?我们先看一下下面这段代码: 1234public class Demo(){F f=new F();}class F{}这里的F的实例化对象就可以用f表达出来。同理F类也是一个实例化对象,Class类的实例化对象。我们可以理解为任何一个类都是Class类的实例化对象,这种实例化对象有三种表示方法: 123456789101112131415public class Demo(){F f=new F();//第一种表达方式Class c1=F.class;//这种表达方式同时也告诉了我们任何一个类都有一个隐含的静态成员变量class//第二种表达方式Class c2=f.getClass();//这种表达方式在已知了该类的对象的情况下通过getClass方法获取//第三种表达方式Class c3 = null;try {c3 = Class.forName("com.text.F");//类的全称} catch (ClassNotFoundException e) {e.printStackTrace();}}class F{}以上三种表达方式,c1,c2,c3都表示了F类的类类型,也就是官方解释的Class Type。那么问题来了: 1System.out.println(c1 == c2)? or System.out.println(c1 == c3)?答案是肯定的,返回值为ture。这表明不论c1 or c2 or c3都代表了F类的类类型,也就是说一个类只可能是Class类的一个实例对象。理解了Class的概念,我们也可以通过类的类类型创建该类的对象实例,用c1 or c2 or c3的newInstance()方法: 12345678910111213Public class Demo1{try {Foo foo = (Foo)c1.newInstance();//foo就表示F类的实例化对象foo.print();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}class F{void print(){}}这里需要注意的是,c1是F类的类类型,创建出来的就是F类的对象。如果a是A类的类类型,那么创建出来的对象也应该与之对应,属于A类的对象。 二、方法的反射Class类有一个最简单的方法,getName(): 1234567891011public class Demo2 {public static void main(String[] args) {Class c1 = int.class;//int 的类类型Class c2 = String.class;//String类的类类型Class c3 = void.class;System.out.println(c1.getName());System.out.println(c2.getName());System.out.println(c2.getSimpleName());System.out.println(c3.getName());}}本的数据类型以及void关键字都是存在类类型的。 案例: 123456789101112131415161718192021222324252627282930313233public class ClassUtil {public static void printClassMethodMessage(Object obj){//要获取类的信息》》首先我们要获取类的类类型Class c = obj.getClass();//我们知道Object类是一切类的父类,所以我们传递的是哪个子类的对象,c就是该子类的类类型。//接下来我们要获取类的名称System.out.println("类的名称是:"+c.getName());/**我们知道,万事万物都是对象,方法也是对象,是谁的对象呢? 在java里面,方法是Method类的对象*一个成员方法就是一个Method的对象,那么Method就封装了对这个成员 *方法的操作*///如果我们要获得所有的方法,可以用getMethods()方法,这个方法获取的是所有的Public的函数,包括父类继承而来的。如果我们要获取所有该类自己声明的方法,就可以用getDeclaredMethods()方法,这个方法是不问访问权限的。Method[] ms = c.getMethods();//c.getDeclaredMethods()//接下来我们拿到这些方法之后干什么?我们就可以获取这些方法的信息,比如方法的名字。//首先我们要循环遍历这些方法for(int i = 0; i < ms.length;i++){//然后可以得到方法的返回值类型的类类型Class returnType = ms[i].getReturnType();//得到方法的返回值类型的名字System.out.print(returnType.getName()+" ");//得到方法的名称System.out.print(ms[i].getName()+"(");//获取参数类型--->得到的是参数列表的类型的类类型Class[] paramTypes = ms[i].getParameterTypes();for (Class class1 : paramTypes) {System.out.print(class1.getName()+",");}System.out.println(")");}}}总结思路:通过方法的反射得到该类的名称步骤:1.获取该类的类类型2.通过类类型获取类的方法(getMethods())3.循环遍历所获取到的方法4.通过这些方法的getReturnType()得到返回值类型的类类型,又通过该类类型得到返回值类型的名字5.getName()得到方法的名称,getParameterTypes()获取这个方法里面的参数类型的类类型。 三、成员变量的反射首先我们需要认识到成员变量也是对象,是java.lang.reflect.Field类的对象,那么也就是说Field类封装了关于成员变量的操作。既然它封装了成员变量,我们又该如何获取这些成员变量呢?它有这么一个方法: 12345public class ClassUtil {public static void printFieldMessage(Object obj){Class c = obj.getClass();//Field[] fs = c.getFields();}这里的getFields()方法获取的所有的public的成员变量的信息。和方法的反射那里public的成员变量,也有一个获取所有自己声明的成员变量的信息:Field[] fs = c.getDeclaredFields(); 我们得到它之后,可以进行遍历(既然封装了Field的信息,那么我们就可以得到Field类型) 12345678for (Field field : fs) {//得到成员变量的类型的类类型Class fieldType = field.getType();String typeName = fieldType.getName();//得到成员变量的名称String fieldName = field.getName();System.out.println(typeName+" "+fieldName);}四、构造函数的反射不论是方法的反射、成员变量的反射、构造函数的反射,我们只需要知道:要想获取类的信息,首先得获取类的类类型。 12345678910111213141516171819202122public static void printConMessage(Object obj){Class c = obj.getClass();/* 首先构造函数也是对象,是java.lang.Constructor类的对象 也就是java.lang. Constructor中封装了构造函数的信息 和前面说到的一样,它也有两个方法: getConstructors()方法获取所有的public的构造函数 getDeclaredConstructors()方法得到所有的自己声明的构造函数*/ //Constructor[] cs = c.getConstructors();Constructor[] cs = c.getDeclaredConstructors();for (Constructor constructor : cs) {//我们知道构造方法是没有返回值类型的,但是我们可以:System.out.print(constructor.getName()+"(");//获取构造函数的参数列表》》得到的是参数列表的类类型Class[] paramTypes = constructor.getParameterTypes();for (Class class1 : paramTypes) {System.out.print(class1.getName()+",");}System.out.println(")");}}五、Class类的动态加载类如何动态加载一个类呢?首先我们需要区分什么是动态加载?什么是静态加载?我们普遍认为编译时刻加载的类是静态加载类,运行时刻加载的类是动态加载类。我们举一个例子: 123456789101112Class A{Public static void main(String[] args){if("B".equal(args[0])){B b=new B();b.start();}if("C".equal(args[0])){C c=new C();C.start();}}}上面这一段代码,当我们在用eclipse或者myeclipse的时候我们并不关心是否能够通过编译,当我们直接在cmd使用javac访问A.java类的时候,就会抛出问题: 1234567891011121314151617A.java:7:错误:找不到符号B b=new B();符号: 类B位置: 类AA.java:7:错误:找不到符号B b=new B();符号: 类B位置: 类AA.java:12:错误:找不到符号C c=new C();符号: 类C位置: 类AA.java:12:错误:找不到符号C c=new C();符号: 类C位置: 类A4个错误或许我们理所当然的认为这样应该是错,类B根本就不存在。但是如果我们多思考一下,就会发现B一定用吗?不一定。C一定用吗?也不一定。那么好,现在我们就让B类存在 12345Class B{Public static void start(){System.out.print("B...satrt");}}现在我们就先 javac B.class,让B类先开始编译。然后在运行javac A.class。结果是: 123456789A.java:12:错误:找不到符号C c=new C();符号: 类C位置: 类AA.java:12:错误:找不到符号C c=new C();符号: 类C位置: 类A2个错误我们再想,这个程序有什么问题。如果你说没有什么问题?C类本来就不存在啊!那么问题来了B类已经存在了,假设我现在就想用B,我们这个程序用得了吗?答案是肯定的,用不了。那用不了的原因是什么?因为我们这个程序是做的类的静态加载,也就是说new创建对象是静态加载类,在编译时刻就需要加载所有的,可能使用到的类。所以不管你用不用这个类。现在B类是存在的,但是我们这个程序仍然用不了,因为会一直报C类有问题,所以B类我也用不了。那么在实际应用当中,我们肯定需要如果B类存在,B类我就能用,当用C类的时候,你再告诉我错了。如果说将来你有100个类,只要其中一个类出现问题,其它99个类你都用不了。所以这并不是我们想要的。我们想要的就是我用那个类就加载那个类,也就是常说的运行时刻加载,动态加载类。如何实现动态加载类呢?我们可以建这么一个类: 1234567891011Class All{Public static void start(){try{Class cl= Class.forName(args[0]);//通过类类型,创建该类的对象cl.newInstance();}catch(Exception e){e.printStackTrace();}}}前面我们在分析Class实例化对象的方式的时候,Class.forName(“类的全称”),它不仅仅表示了类的类类型,还表示了动态加载类。当我们javac All.java的时候,它不会报任何错误,也就是说在编译的时候是没有错误的。只有当我们具体用某个类的时候,那个类不存在,它才会报错。如果加载的类是B类,就需要: 1B bt = (B) cl.newInstance();万一加载的是C类呢,可以改成 1C ct = (C) cl.newInstance();但是如果我想用很多的类或者加载很多的类,该怎么办?我们可以统一一个标准,不论C类还是B类或者其他的类,比如定义一个标准 1Stand s = (Stand) cl.newInstance();只要B类和C类都是这个标准的就行了。 123456789101112131415Class All{Public static void start(){try{Class cl= Class.forName(args[0]);//通过类类型,创建该类的对象Stand s = (Stand) cl.newInstance();s.start();}catch(Exception e){e.printStackTrace();}}}interface Stand {Public void start();}现在如果我想要用B类,我们只需要: 12345Class B implements Stand{Public void start(){System.out.print("B...satrt");}}加载B类,编译运行。 123javac B.javajavac Stand.javajava Stand B结果: 1B...satrt如果以后想用某一个类,不需要重新编译,只需要实现这个标准的接口即可。只需要动态的加载新的东西就行了。这就是动态加载类。

auto_answer 2019-12-02 01:50:24 0 浏览量 回答数 0

问题

荆州开诊断证明-qgm

游客5k2abgdj3m2ti 2019-12-01 22:08:57 3 浏览量 回答数 0

回答

NewPrice的数据类型你也没说明啊,具体有什么方法也不知道.需要你查看一下接口的API文档. 具体的思路就是得到Times和Data的列表,可以用zip方法组合一下再循环.###### 用这个库,比较新。 https://pypi.python.org/pypi/pymssql/2.1.3  ###### zip函数可以以将他们的对应关系组###### 引用来自“庄严”的评论 NewPrice的数据类型你也没说明啊,具体有什么方法也不知道.需要你查看一下接口的API文档. 具体的思路就是得到Times和Data的列表,可以用zip方法组合一下再循环. Newprice=w.wst("600000.SH", "last", "2017-05-18 10:00:00", "2017-05-18 16:20:28", "") print (Newprice) time = Newprice.Times data = Newprice.Data xy =zip(time,data) #print(xy) for dd in xy : for ss in dd : print (ss) 老哥,我是这么做的,得出来的是这个 老弟是初学的python 就是想问一下,如果存入sql server 数据库,应该怎么存呢,以什么形式存呢,还有你说的这个Newprice是什么格式,我也不太清楚,我调用的是wind的接口,返回的就是这个,麻烦老哥了######那以什么形式存进去呢,java中是将每组数据放入对象,然后以对象的形式存入数据库,我不知道python怎么搞######1)首先在数据库建立对应的表 2)知道怎么用python连接数据库 3)用python拼接SQL语句插入数据库,或者用相关的ORM方法插入数据.###### 起码先看看pep8的社区规范吧,python的代码规范和java完全不同######我知道,我主要是想问的是这个,我得到的这个可以以什么形式存入数据库###### 这个数据库定义好后表结构,然后对应字段写sql存进去就可以了。如下图,我这个使用的postgresql数据库,不过我是一条条数据插入的,你这个可以写个for循环插入数据库。 ###### 引用来自“庄严”的评论 NewPrice的数据类型你也没说明啊,具体有什么方法也不知道.需要你查看一下接口的API文档. 具体的思路就是得到Times和Data的列表,可以用zip方法组合一下再循环. 引用来自“gugu_鸣音”的评论 Newprice=w.wst("600000.SH", "last", "2017-05-18 10:00:00", "2017-05-18 16:20:28", "") print (Newprice) time = Newprice.Times data = Newprice.Data xy =zip(time,data) #print(xy) for dd in xy : for ss in dd : print (ss) 老哥,我是这么做的,得出来的是这个 老弟是初学的python 就是想问一下,如果存入sql server 数据库,应该怎么存呢,以什么形式存呢,还有你说的这个Newprice是什么格式,我也不太清楚,我调用的是wind的接口,返回的就是这个,麻烦老哥了 问一下老哥,在连接数据库时需要导包 在项目中  import  pyodbc为甚会报错啊###### 引用来自“听风的小猪”的评论 这个数据库定义好后表结构,然后对应字段写sql存进去就可以了。如下图,我这个使用的postgresql数据库,不过我是一条条数据插入的,你这个可以写个for循环插入数据库。 您看一下这个,现在做的直插入最后一条,,我应该改才能循环插入呢

爱吃鱼的程序员 2020-06-04 16:24:20 0 浏览量 回答数 0

回答

从 10 年前我开始写第一行 Java 代码至今,一直觉得 null 在 Java 中是一个最特殊的存在,它既是好朋友,可以把不需要的变量置为 null 从而释放内存,提高性能;它又是敌人,因为它和大名鼎鼎且烦不胜烦的 NullPointerException(NPE)如影随形,而 NPE 的发明人 Tony Hoare 曾在 2009 年承认:“Null References 是一个荒唐的设计,就好像我赌输掉了十亿美元”。 你看,null 竟然是一个亦敌亦友的家伙。 通常,为了表示列表中的元素不存在,我们首先想到的就是返回 null,这种想法很合理,合理到无法反驳。我们来模拟一个实际的应用场景,假设作者现在要从数据库中获取一个姓名的列表,然后将姓名打印到控制台,对应的代码如下。 public class NullDemo { public static void main(String[] args) { List names = getNamesFromDB(); if (names != null) { for (String name : names) { System.out.println(name); } } } public static List<String> getNamesFromDB() { // 模拟此时没有从数据库获取到对应的姓名。 return null; } } 由于 getNamesFromDB() 方法返回了 null 来作为没有姓名列表的标志,那就意味着在遍历列表的时候要先对列表判空,否则将会抛出 NPE 错误,不信你把 if (names != null) 去掉试试,立马给你颜色看。 Exception in thread "main" java.lang.NullPointerException at com.cmower.dzone.stopdoing3things.NullDemo.main(NullDemo.java:12) 那假如作者在遍历的时候不想判空又不想代码抛出 NPE 错误,他该怎么做呢?闭上你的大眼睛好好想一想。 嗯,报告,我想出来了,建议作者从数据库中获取姓名的时候返回长度为 0 的列表,来表示未找到数据的情况。代码示例如下所示: public class Null2Length0Demo { public static void main(String[] args) { List names = getNamesFromDB(); for (String name : names) { System.out.println(name); } } public static List<String> getNamesFromDB() { // 模拟此时没有从数据库获取到对应的姓名。 return Collections.emptyList(); } } 注:Collections.emptyList() 用于返回一个不可变的空列表,能理解吧?假如不能理解的话,我再写一个返回可变的空列表的示例,你对比着感受一下就理解了。 public class Null2Length0MutableDemo { public static void main(String[] args) { List names = getNamesFromDB(); for (String name : names) { System.out.println(name); } } public static List<String> getNamesFromDB() { // 模拟此时没有从数据库获取到对应的姓名。 return new ArrayList<>(); } } new ArrayList<>() 返回的就是可变的,意味着你还可以改变这个列表的元素,比如说增加,删除是不可能的了,因为本身就没有元素可删。 你看,Collections.emptyList() 和 new ArrayList<>() 都可以替代 null,来减少打印列表时不必要的判空以及那个讨厌的家伙——NPE。 除了我这个想法之外,你还能想到其他的解决方案吗?来,再次闭上你的大眼睛,替作者想一想,没准你还能想到一个—— Java 8 新增的 Optional 类,一个容器类,可以存放任意类型的元素,如果值存在则 isPresent() 方法会返回 true;Optional 类提供了很多专业的方法而不用显式进行空值检查,从而巧妙地消除了 NPE。 来,先读示例为快! public class Null2OptionalDemo { public static void main(String[] args) { Optional<List > list = getNamesFromDB(); list.ifPresent(names -> { for (String name : names) { System.out.println(name); } }); } public static Optional<List<String>> getNamesFromDB() { boolean hasName = true; if (hasName) { String [] names = {"沉默王二", "一枚有趣的程序员", "微信搜索关注我"}; return Optional.of(Arrays.asList(names)); } return Optional.empty(); } } 看得不太懂?我来负责任地介绍一下,你们握个手。 假如数据库中存在姓名,则使用 Optional.of() 对返回值进行包装,从而返回一个 Optional 类型的对象。为什么不用构造方法呢,因为构造方法是 private 的(源码如下所示)。 private Optional(T value) { this.value = value; } 那为什么要用 Optional.of() 呢?嗯,good question。继续上源码。 public static Optional of(T value) { return new Optional<>(Objects.requireNonNull(value)); } 1)如果 value 为 null,那么 Objects.requireNonNull(value) 就会抛出 NPE(嗯哼,总归是要碰面的,但好歹不用我们程序员主动 check 了)。 2)如果 value 不为 null,则通过 new 关键字创建正常的 Optional 对象。 假如数据库中不存在姓名呢?使用 Optional.empty() 作为返回值。来,继续上源码。 public static Optional empty() { @SuppressWarnings("unchecked") Optional t = (Optional ) EMPTY; return t; } 嗯哼,EMPTY 是什么玩意? private static final Optional<?> EMPTY = new Optional<>(null); 竟然是 Optional 类的一个私有常量(static + final)。怎么此刻我的脑子里想起了安徒生先生的寓言故事——皇帝的新衣,嗯,甭管了,反正“底层终究是丑陋的”。 这样的话,就可以使用 Optional 对象的 ifPresent() 方法来判断值是否存在,如果只需要处理值存在的情况,就可以使用 Lambda 表达式的方式直接打印姓名。 list.ifPresent(names -> { for (String name : names) { System.out.println(name); } }); 有点简单粗暴,对不对?但不管怎么说,终于可以在表象上和 null,NPE 说拜拜了,做人嘛,开心点~

剑曼红尘 2020-03-11 22:24:51 0 浏览量 回答数 0

问题

2018python技术问答集锦,希望能给喜欢python的同学一些帮助

技术小能手 2019-12-01 19:31:10 2040 浏览量 回答数 2

问题

泛型list(列表为空),如何获取里面元素的类型:报错

kun坤 2020-06-07 15:59:19 0 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SSL证书 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 2020中国云原生 阿里云云栖号