为您找到与java反射常用方法相关的共200个结果:
Java 平台是基于 Java 语言的平台。下面是读文网小编为您带来的java反射方法调用,希望对大家有所帮助。
Java平台和语言最开始只是SUN公司在1990年12月开始研究的一个内部项目。SUN公司的一个叫做帕特里克·诺顿的工程师被自己开发的C和C语言编译器搞得焦头烂额,因为其中的API极其难用。帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth 计划”的项目的机会。
“Stealth 计划”后来改名为“Green计划”,JGosling(詹姆斯·高斯林)和麦克·舍林丹也加入了帕特里克的工作小组。他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,SUN公司预料未来科技将在家用电器领域大显身手。团队最初考虑使用C 语言,但是很多成员包括SUN的首席科学家比尔·乔伊,发现C 和可用的API在某些方面存在很大问题。
工作小组使用的是内嵌类型平台,可以用的资源极其有限。很多成员发现C 太复杂以至很多开发者经常错误使用。他们发现C 缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。
根据可用资金,比尔·乔伊决定开发一种集C语言和Mesa语言搭成的新语言,在一份报告上,乔伊把它叫做“未来”,他提议SUN公司的工程师应该在C 的基础上,开发一种面向对象的环境。最初,高斯林试图修改和扩展C 的功能,他自己称这种新语言为C --,但是后来他放弃了。他将要创造出一种全新的语言,被他命名为“Oak”(橡树),以他的办公室外的树而命名。
浏览量:3
下载量:0
时间:
Java语言中的许多库类名称,多与咖啡有关。下面是读文网小编为您带来的java 反射调用set方法,希望对大家有所帮助。
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。
浏览量:2
下载量:0
时间:
Java平台和语言最开始只是SUN公司在1990年12月开始研究的一个内部项目。下面是读文网小编为您带来的java string 常用方法,希望对大家有所帮助。
抽象类:规定一个或多个抽象方法的类别本身必须定义为abstract,抽象类只是用来派生子类,而不能用它来创建对象。
final类:又称“最终类”,它只能用来创建对象,而不能被继承,与抽象类刚好相反,而且抽象类与最终类不能同时修饰同一个类。
包:Java中的包是相关类和接口的集合,创建包须使用关键字package。
继承:Java作为面向对象编程语言,支持继承这基本概念。但Java只支持单根继承,java.lang.Object是所有其他类的基类。
多态类:在Java中,对象变量是多态的。而Java中不支持多重继承。
接口:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。
通用编程:任何类类型的所有值都可以同Object类型的变量来代替。
封装:把数据和行为结合起在一个包中,并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)。
重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载。编译器必须挑选出调用哪个方法进行编译。
重写:也可称为方法的“覆盖”。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。值得注意的是,子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明。
Class类:Object类中的getClass方法返回Class类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。
浏览量:2
下载量:0
时间:
库存控制是对制造业或服务业生产、经营全过程的各种物品、产成品以及其他资源进行管理和控制!那么,库存控制常见的方法有哪些呢?下面就随读文网小编一起来了解下吧!
所谓定期订购控制法是指按预先确定的订货间隔期按期订购商品,以补充库存的一种库存控制方法。
定量与定期库存控制法的区别是:
(1)提出订购请求时点的标准不同。
(2)请求订购的商品批量不同。
(3)库存商品管理控制的程度不同。
(4)适用的商品范围不同。
浏览量:3
下载量:0
时间:
中医认为与水液代谢关系最为密切的脏腑是肺、脾、肾,这三个脏器的功能失调是引起水肿发生的关键所在,因此治疗水肿,中医一般以宣肺、健脾、温肾为基本原则,具体方法如下。(需要在中医师的指导下对症用药)
肾性水肿常用治疗方法1、宣肺利水
要临床表现为风邪外袭所致发热,恶寒,恶风,头痛,肢体关节酸痛,咳嗽,舌苔薄白脉浮。浮肿先见于面部,后遍及全身,小便不利。中医称此种水肿为风水,多见于急性肾炎或慢性肾炎急性发作。常用方剂有越婢加术汤和麻黄连翘赤小豆汤;常用药物有麻黄、生石膏、生姜、白术、防风、桑白皮、双花、连翘、薄荷、前胡、赤小豆、车前子、泽泻、白茅根、益母草等。
主要临床表现为下肢浮肿较甚,按之凹陷不易恢复,胸闷腹胀,纳少便溏,面色萎黄,神疲肢冷,小便量少,舌淡苔白,脉滑沉缓。常用方剂为实脾饮加减,药物有:茯苓、白术、附子、干姜、厚朴、木香、大腹皮、木瓜、草果、甘草,可加猪苓、泽泻、党参、黄芪等。
浏览量:3
下载量:0
时间:
我们在工作和生活中,时不时会遇到创伤。皮肤破损、血管及神经断裂、骨折等都不可避免地会造成出血。下面就是读文网小编为大家整理的资料,供大家参考。
压:当看见伤口流血,最常做的急救动作就是用手按住出血区,这就是压迫止血法。压迫止血法分两种:一种是伤口直接压迫,无论用干净纱布还是其他布类物品直接按在出血区,都能有效止血。另外一种是指压止血法。用手指压在出血动脉近心端的邻近骨头上,阻断血运来源,以达到止血目的。找压迫点时要用食指或无名指,不要用拇指,因为拇指中央有粗大的动脉,容易造成误判断。当找到动脉压迫点后,再换拇指按压或几个指头同时按压。指压止血法虽然操作容易,但不经过系统培训,很难达到止血目的。
包:无论什么样的出血,最终都要用包扎来解决。包扎所用的材料是纱布、绷带、弹性绷带或干净的棉布或用棉织品做成的衬垫。包扎的原则是先盖后包,力度适中。先盖后包即先在伤口上盖上敷料(够大、够厚的棉织品衬垫),然后再用绷带或三角巾包扎。这是因为常用的普通纱布容易粘伤口,给后续处理增加难度。力度适中指的是包扎后应止血有效,检查远端的动脉还在搏动;包扎过松,止血无效;包扎过紧,会造成远端组织缺血缺氧坏死。
塞:用于腋窝、肩、口鼻、宫腔或其他盲管伤和组织缺损处的填塞止血方法,是用棉织品将出血的空腔或组织缺损处紧紧填塞,直至确实止住出血。填实后,伤口外侧盖上敷料后再加压包扎,达到止血目的。此方法的危险在于用压力将棉织品填塞结实可能造成局部组织损伤,同时又将外面的脏东西带入体内造成感染,尤其是厌氧菌感染常引发破伤风或气性坏疽。所以,除非必需,尽量不采用此法。
捆:止血带止血法在某些特定条件下是有效的,如战伤、较大的肢体动脉出血等。通常止血带用于手术室,对控制肢体出血是有效的,但潜在的不良作用包括暂时的或持续的对神经和肌肉的损伤,也会因肢体缺血引起全身性并发症,包括酸中毒、高钾血症、心律失常、休克、肢体毁损,甚至死亡。并发症与止血带的压迫力量过大和持续时间过长密切相关,因此没有经过严格训练的非医务人员不在万不得已的情况下,不要使用此方法。
浏览量:4
下载量:0
时间:
血液病患者在家里怎么紧急止血,下面就是读文网小编为大家整理的资料,供大家参考。
1.手压止血法:用手指、手掌或拳头压迫出血区域近侧动脉干,暂时性控制出血。压迫点应放在易于找到的动脉径路上,压向骨骼方能有效,例如,头、颈部出血,可指压颞动脉、颌动脉、椎动脉;上肢出血,可指压锁骨下动脉、肱动脉、肘动脉、尺、桡动脉;下肢出血,可指压股动脉、腘动脉、胫动脉。
2.加压包扎止血法:用厚敷料覆盖伤口后,外加绷带缠绕,略施压力,以能适度控制出血而不影响伤部血运为度。四肢的小动脉或静脉出血、头皮下出血多数患者均可获得止血目的。 3.强屈关节止血法:前臂和小腿动脉出血不能制止,如无合并骨折或脱位时,立即强屈肘关节或膝关节,并用绷带固定,即可控制出血,以利迅速转送医院。
4.填塞止血法:广泛而深层软组织创伤,腹股沟或腋窝等部位活动性出血以及内脏实质性脏器破裂,如肝粉碎性破裂出血。可用灭菌纱布或子宫垫填塞伤口,外加包扎固定。在做好彻底止血的准备之前,不得将填人的纱布抽出,以免发生大出血措手不及。
5.止血带法:止血带的使用,一般适用于四肢大动脉的出血,并常常在采用加压包扎不能有效止血的情况下,才选用止血带。常用的止血带有以下各种类型: (1)橡皮管止血带:常用弹性较大的橡皮管,便于急救时使用。(2)弹性橡皮带(驱血带):用宽约5cm的弹性橡皮带,抬高患肢,在肢体上重叠加压,包绕几圈,以达到止血目的。(3)充气止血带:压迫面宽而软,压力均匀,还有压力表测定压力,比较安全,常用于四肢活动性大出血或四肢手术时采用。
浏览量:3
下载量:0
时间:
专利权是专利人利用其发明创造的独占权利,专利侵权是指未经专利权人许可,以生产经营为目的,实施了依法受保护的有效专利的违法行为。下面由读文网小编为你详细介绍相关法律知识。
对于发明专利和实用新型专利侵权的判定方法,法院基本上采用的是分三步走的方法。即:
a:确定被控侵权产品(含方法,以下均相同)的相应技术特征。也就是根据权利要求所记载的必要技术特征,对被控侵权产品的技术特征进行对应的分解。
b:确定专利权的保护范围。即首先要明确专利权人请求保护的是什么。根据专利法第59条规定,发明或者实用新型专利权的保护范围以其权利要求的内容为准。因此,专利的权利要求书是我们确定专利权保护范围的唯一依据。根据专利法实施细则第二十一条之规定,权利要求书应当有独立权利要求,可以有从属权利要求。所谓独立权利要求,是指从整体上反映发明或者实用新型的技术方案,记载为达到发明或者实用新型目的的必要技术特征。
独立权利要求写在从属权利要求之前,它的结构由前序和特征两部分组成,二者合在一起限定发明或者实用新型要求保护的范围。可用下式来表示:前序特征+特征特征=专利权的保护范围。所谓从属权利要求,是指记载要求保护的发明或者实用新型的附加技术特征,对引用的权利要求作进一步的限定,其主要作用是专利权人用来维护专利权不被无效掉。因此,专利侵权判定中所说的权利要求,就是指独立权利要求,而不是从属权利要求。为了方便比较,通常要把独立权利要求分解成若干个相对独立的必要技术特征。这个过程,就是对权利要求进行解释。解释权利要求的法定文件是专利说明书及附图。当然,专利文档等也是解释权利要求的重要参考文件。
c:将经过分解后的权利要求所记载的必要技术特征与被控侵权产品的特征进行一一对应的比较。比较的结果可能出现以下几种情况:
(1)专利权利要求所记载的必要技术特征与被控侵权产品的特征完全相同。即:假如专利权利要求所记载的必要技术特征为a、b、c,而被控侵权产品的特征也为a、b、c,二者的关系可以表示为:abc=abc,那么我们就认为专利权的保护范围全面覆盖了被控侵权产品,或者说被控侵权产品完全落入了专利权的保护范围,专利侵权成立。这种情形的专利侵权是标准的、不折不扣的专利侵权,有的人将其称之为"字面侵权"。
(2)专利权利要求所记载的必要技术特征与被控侵权产品的特征不完全相同。即:专利权利要求所记载的必要技术特征为a、b、c,而被控侵权产品的特征为a'、b'、c',那么此时可能出现两种情况:一种是abc与a'b'c'之间具有实质性的区别,二者的关系可以表示为:abc1a'b'c';另一种是abc与a'b'c'之间的区别是非实质性的,是等同物的替换,二者的关系可以表示为:'。对于第一种情况,我们会认定被控侵权产品没有落入专利权的保护范围,专利侵权不成立;对于后一种情况,我们则认定被控侵权产品的特征是对专利权利要求所记载的必要技术特征的等同物替换,被控侵权产品仍落入专利权的保护范围,专利侵权成立。这就是专利侵权判定中所常说的等同原则。
(3)专利权利要求所记载的必要技术特征多于被控侵权产品的特征。即:假如专利权利要求所记载的必要技术特征为a、b、c,而被控侵权产品的特征为a、b,二者的关系可以表示为:abc<ab,那么我们一般认为专利侵权不成立,因为此时被控侵权产品缺少了专利权利要求所记载的必要技术特征,没有落入专利权的保护范围。只有在极其特殊的情况下,例如,被控侵权产品所缺少的特征恰恰被认定为是专利权利要求中的非必要技术特征的情况下,即通常所说的"多余指定",才有可能认定专利侵权成立。关于多余指定原则的适用问题,我将在下面作为一个专门的问题进行介绍。
(4)被控侵权产品的特征多于专利权利要求所记载的必要技术特征。即:假如专利权利要求所记载的必要技术特征为a、b、c,而被控侵权产品的特征为a、b、c、d,二者的关系可以表示为:abcd>abc,那么我们也认为专利侵权成立。此时,被控侵权产品和专利之间的关系很可能就是基本专利和从属专利之间的关系,从属专利权人未经基本专利权人许可,实施基本专利权人的基本专利,按照专利法的规定,也构成专利侵权。
浏览量:3
下载量:0
时间:
近两年来,一种新的销售模式和商业形式微商受到了消费者的认可。微商凭借微信朋友圈、微博空间等平台一度走红,成为了现如今炙手可热的商业渠道。下面是读文网小编为大家带来的微商团队的常用管理方法,欢迎阅读。
效果奇特的零成本激励法人都有做个“重要”人物的欲望,都渴望得到别人的赞美和肯定。赞美是一种非常有效而且不可思议的推动力量,它能赋予人一种积极向上的力量,能够极大地激发人对事物的热情用赞美的方式激励代理商,管理者所能得到的将会远远地大于付出。
65、最让人心动的激励是赞美;
66、“高帽子”即使不真也照样塑造人;
67、用欣赏的眼光寻找代理商的闪光点;
68、懂得感恩才能在小事上发现美;
69、摆脱偏见,使称赞公平公正;
70、赞美到点上才会有良好的效果;
71、当众赞美代理商时要注意方式;
72、对新老代理商的赞美要有区别;
浏览量:4
下载量:0
时间:
Java 技术具有卓越的通用性、高效性、平台移植性和安全性。下面是读文网小编为您带来的java equals方法使用,希望对大家有所帮助。
与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。
Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和静态的语言。
Java 平台是基于 Java 语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。
Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。
浏览量:2
下载量:0
时间:
ajax调用java后台的方法,其实是通过url链接来访问。下面是读文网小编为大家带来一篇ajax调用java方法,希望对大家有所帮助。
JavaJsDemo.java
package com.demo.android.JavaJsDemo;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import java.util.ArrayList;
import java.util.List;
public class JavaJsDemo extends Activity {
/** Called when the activity is first created. */
private WebView web;
public List<String> list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initData();
setContentView(R.layout.main);
web = (WebView)this.findViewById(R.id.webview);
//开启javascript设置
web.getSettings().setJavaScriptEnabled(true);
//把RIAExample的一个实例添加到js的全局对象window中
//这样就可以使用window.javatojs来调用它的方法
web.addJavascriptInterface(this, "javatojs");
//加载网页
web.loadUrl("file:///android_asset/index.html");
}
void initData(){
list=new ArrayList<String>();
for(int i=0;i<5;i++){
list.add("我是List中的第"+(i+1)+"行");
}
}
/**
* 该方法将在js脚本中,通过window.javatojs.....()进行调用
* @return
*/
public Object getObject(int index){
return list.get(index);
}
public int getSize(){
return list.size();
}
public void Callfunction(){
web.loadUrl("javascript: GetList()");
}
}
index.html
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://xxx.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>demotitle>
<script language="javascript">
function GetList(){
var i=window.javatojs.getSize();
for(var n=0;n<i;n++){
var jsdata= window.javatojs.getObject(n);//拿到activity里面的属性javadata
var datalistdiv = document.getElementById("datalist"); //得到页面的div
pnode = document.createElement("p");//创建一个p标签,再建个textnode
tnode = document.createTextNode(jsdata);
pnode.appendChild(tnode);//p中加入数据
datalistdiv.appendChild(pnode);//div中键入新的p
}
}
script>
head>
<body onload="javascript:window.javatojs.Callfunction()">//调用java方法
<div id = "datalist">
this is a demo
div>
body>
html>
浏览量:3
下载量:0
时间:
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念.下面是读文网小编为您带来的java get set方法的使用,希望对大家有所帮助。
1.简单性
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。
2.面向对象
Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。
3.分布性
Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。
网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。
4.编译和解释性
Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。
在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。
5.稳健性
Java
Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。
Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致更可靠的程序。
可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重写存储和讹误数据的可能性。类似地,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。
异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
6.安全性
Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。
Java运行系统使用字节码验证过程来保证装载到网络上的代码不违背任何Java语言限制。这个安全机制部分包括类如何从网上装载。例如,装载的类是放在分开的名字空间而不是局部类,预防恶意的小应用程序用它自己的版本来代替标准Java类。
7.可移植性
Java使得语言声明不依赖于实现的方面。例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。
Java环境本身对新的硬件平台和操作系统是可移植的。Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。
8.高性能
Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。
Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。
9.多线索性
Java是多线索语言,它提供支持多线索的执行(也称为轻便过程),能处理不同任务,使具有线索的程序设计很容易。Java的lang包提供一个Thread类,它支持开始线索、运行线索、停止线索和检查线索状态的方法。
Java的线索支持也包括一组同步原语。这些原语是基于监督程序和条件变量风范,由C.A.R.Haore开发的广泛使用的同步化方案。用关键词synchronized,程序员可以说明某些方法在一个类中不能并发地运行。这些方法在监督程序控制之下,确保变量维持在一个一致的状态。
10.动态性
Java语言设计成适应于变化的环境,它是一个动态的语言。例如,Java中的类是根据需要载入的,甚至有些是通过网络获取的。
猜你感兴趣:
浏览量:3
下载量:0
时间:
Java自面世后就非常流行,发展迅速,对C++语言形成有力冲击。下面是读文网小编为您带来的java动态调用方法,希望对大家有所帮助。
1994年6、7月间,在经历了一场历时三天的头脑风暴的讨论之后,约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava。同年,Oak改名为Java。商标搜索显示,Oak已被一家显卡制造商注册,因此团队找到了一个新名字。这个名字是在很多成员常去的本地咖啡馆中杜撰出来的。名字是不是首字母缩写还不清楚,很大程度上来说不是。虽然有人声称是开发人员名字的组合:James Gosling(詹姆斯·高斯林)Arthur Van Hoff(阿瑟·凡·霍夫)Andy Bechtolsheim(安迪·贝克托克姆),或“Just Another Vague Acronym”(只是另外一个含糊的缩写)。还有一种比较可信的说法是这个名字是出于对咖啡的喜爱,所以以Java咖啡来命名。类文件的前四个字节如果用十六进制阅读的话,分别为“CA FE BA BE”,就会拼出两个单词“CAFE BABE”(咖啡宝贝)。
1994年10月,HotJava和Java平台为公司高层进行演示。1994年,Java 1.0a版本已经可以提供下载,但是Java和HotJava浏览器的第一次公开发布却是在1995年5月23日SunWorld大会上进行的。SUN公司的科学指导约翰·盖吉宣告Java技术。这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。1996年1月,Sun公司成立了Java业务集团,专门开发Java技术。
浏览量:2
下载量:0
时间:
ajax调用java后台的方法,其实是通过url链接来访问。下面是读文网小编为大家带来一篇ajax调用java方法,希望对大家有所帮助。
public class Test {
public static String sayHello(String name){
return "hello, " + name;
}
}
注意:必须是公开的静态方法。
ajax分为同步、异步调用,如果没有传递回调函数,则是同步调用;如果传递回调函数,则是异步调用。
同步调用
<script type="text/javascript">
......
try{
var obj = Test.sayHello('world!');
......
}catch(e){
//e.error 错误码
//e.message 错误描述
}
......
</script>
不传递回调函数,以try…catch来处理错误。在同步调用模式下,如果有网络错误、业务逻辑错误等,会抛出一个异常。
异步调用
<script type="text/javascript">
......
Test.sayHello('world!',
function(obj){ //success callback function
......
},
function(error, message){ //fail callback function
}
);
......
</script>
传递回调函数作为参数。如果只有一个回调函数, 则默认是成功的回调函数。
AJAXRPC完整示例
首先我们有一个服务端的类,和一些静态方法:
public class Test {
//test Date
public static Date getTime(){
return new Date();
}
//test Number
public static int add(int a, int b){
return a + b;
}
//test String
public static String sayHello(String name){
return "hello, " + name;
}
//test Boolean
public static Boolean isTrue(Boolean b){
return b == true;
}
//test Object
public static String addUser(Map user){
String id = UUID.randomUUID().toString();
user.put("id", id);
//insert to database
//...
return id;
}
//test Array
public static List getUsers(String name){
List users = new ArrayList();
for(int i=0; i<20; i++){
Map user = new HashMap();
user.put("name", name+i);
user.put("gender", i%2);
user.put("birthday", new Date());
users.add(user);
}
return users;
}
//test user defined class
public static User updateUser(User user)
{
user.birthday = new Date();
//update to database...
return user;
}
//test user defined class array
public static User[] saveUsers(User[] users)
{
for (int i = 0, l = users.length; i < l; i++)
{
User user = users[i];
user.name = "Server" + i;
user.birthday = new Date();
//update to database...
}
return users;
}
}
#p#副标题#e#
浏览量:2
下载量:0
时间:
android java 调用 js方法怎么使用呢?下面请看小编为大家示范的:
在cocos2d-js 3.0beta中加入了一个新特性,在android平台上我们可以通过反射直接在js中调用java的静态方法。它的使用方法很简单:
var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)
在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回值。下面介绍的类名和方法签名可能会有一点奇怪,但是Java的规范就是如此的。
类名
参数中的类名必须是包含Java包路径的完整类名,例如我们在org.cocos2dx.javascript这个包下面写了一个Test类:
package org.cocos2dx.javascript;
public class Test {
public static void hello(String msg){
System.out.println(msg);
}
public static int sum(int a, int b){
return a + b;
}
public static int sum(int a){
return a + 2;
}
}
那么这个Test类的完整类名应该是org/cocos2dx/javascript/Test,注意这里必须是斜线/,而不是在Java代码中我们习惯的点.。
方法名
方法名很简单,就是方法本来的名字,例如sum方法的名字就是sum。
方法签名
方法签名稍微有一点复杂,最简单的方法签名是()V,它表示一个没有参数没有返回值的方法。其他一些例子:
(I)V表示参数为一个int,没有返回值的方法
(I)I表示参数为一个int,返回值为int的方法
(IF)Z表示参数为一个int和一个float,返回值为boolean的方法
现在有一些理解了吧,括号内的符号表示参数类型,括号后面的符号表示返回值类型。因为Java是允许函数重载的,可以有多个方法名相同但是参数返回值不同的方法,方法签名正是用来帮助区分这些相同名字的方法的。
目前Cocos2d-js中支持的Java类型签名有下面4种:
Java类型
签名
int I
float F
boolean Z
String Ljava/lang/String;
参数
参数可以是0个或任意多个,直接使用js中的number,bool和string就可以。
使用示例
我们将会调用上面的Test类中的静态方法:
//调用hello方法
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "hello", "(Ljava/lang/String;)V", "this is a message from js");
//调用第一个sum方法
var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(II)I", 3, 7);
cc.log(result); //10
//调用第二个sum方法
var result = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "sum", "(I)I", 3);
cc.log(result); //5
在你的控制台会有正确的输出的,这很简单吧。
注意
另外有一点需要注意的就是,在android应用中,cocos的渲染和js的逻辑是在gl线程中进行的,而android本身的UI更新是在app的ui线程进行的,所以如果我们在js中调用的Java方法有任何刷新UI的操作,都需要在ui线程进行。
例如,在下面的例子中我们会调用一个Java方法,它弹出一个android的Alert对话框。
//给我们熟悉的AppActivity类稍微加点东西
public class AppActivity extends Cocos2dxActivity {
private static AppActivity app = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = this;
}
public static void showAlertDialog(final String title,final String message) {
//这里一定要使用runOnUiThread
app.runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog alertDialog = new AlertDialog.Builder(app).create();
alertDialog.setTitle(title);
alertDialog.setMessage(message);
alertDialog.setIcon(R.drawable.icon);
alertDialog.show();
}
});
}
}
然后我们在js中调用
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showAlertDialog", "(Ljava/lang/String;Ljava/lang/String;)V", "title", "hahahahha");
这样调用你就可以看到一个android原生的Alert对话框了。
再加点料
现在我们可以从js调用Java了,那么能不能反过来?当然可以!
在你的项目中包含Cocos2dxJavascriptJavaBridge,这个类有一个evalString方法可以执行js代码,它位于frameworksjs-bindingsindingsmanualplatformandroidjavasrcorgcocos2dxlib文件夹下。我们将会给刚才的Alert对话框增加一个按钮,并在它的响应中执行js。和上面的情况相反,这次执行js代码必须在gl线程中进行。
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//一定要在GL线程中执行
app.runOnGLThread(new Runnable() {
@Override
public void run() {
Cocos2dxJavascriptJavaBridge.evalString("cc.log("Javascript Java bridge!")");
}
});
}
});
这样在点击OK按钮后,你应该可以在控制台看到正确的输出。evalString可以执行任何js代码,并且它可以访问到你在js代码中的对象。
浏览量:2
下载量:0
时间:
Java中的反射,我们常见是取得构造方法,成员变量,普通方法,还有对数组反射的操作。
1、反射的精辟定义:反射就是把Java类中的各种成分映射成相应的Java类。
2、Class实例表示正在运行的Java应用程序中的类和接口。所有的
3、反射除了方法体得不到,别的都可以得到。包括可以得到类里私有的成员变量。本人觉得这破坏了Java的封装性,不知道为什么要这么设计。
一、构造方法的反射
(1)得到需要反射的类Class。知道类名可以使用forName(String className) 方法。也可以通过对象的.getClass方法获得。或者明确去获得哪个类型。比如我们有一个Person类,我们想得到这个类的实例可以写成 Person.class。
(2)构造方法用Constructor类表示。可以通过刚才得到的Class,使用getConstructor方法获得,想获得什么形参的构造方法,就传入什么形参类型的Class,比如想取得String的String(StringBuffer buffer) 构造方法可以这样:String.class.getConstructor(StringBuffer.class)。
(3)使用取得的构造方法创建对象,我们需要使用newInstance方法,形参为可变参数,按上面取得的String的构造方法,我们就可以这样创建对象,String.class.getConstructor(StringBuffer.class).newInstance(new StringBuffer())
二、成员变量的反射
(1)我们同样需要取得反射的类Class。
(2)Java中使用Field类表示字段,我们想获得成员变量可以使用Class的getField(String name)方法,参数为成员变量的名字。也有getFields()方法取得该类的所有成员变量,返回值为Field的数组。取得Field的值,使用 get方法,设置值使用set方法。
(3)暴力访问私有成员使用setAccessible方法,getType() 取得Field类型,getName()取得Field的字段名称。
三、普通方法的反射
(1)取得反射类Class。
(2)方法使用Method类定义,获得方法使用getMethod(String name, Class… parameterTypes) ,用法很像获得构造方法,只是多出一个方法名的参数。
(3)getReturnType()获得方法的返回值类型,getParameterTypes()获得所有形参类型。
(4)用invoke调用方法第一个参数为需要调用的对象,第二个参数为用于调用的参数。
浏览量:2
下载量:0
时间:
ajax是一种基于 JavaScript和HTTP请求(HTTP requests),广泛应用在浏览器的网页开发技术。那么,ajax调用java后台方法是什么?
var http_request=false;
function sendRequest(method,url,content,processResponse)
{
http_request=false;
if(window.XMLHttpRequest) //mozilla
{
http_request=new XMLHttpRequest();
}else if(window.ActiveXObject) //IE
{
try
{
http_request=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e)
{
http_request=new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(!http_request)
{
alert("异步通信对象创建失败!");
return;
}
if(method.toLowerCase()=="get")
{
http_request.open(method,url,true);
http_request.onreadystatechange=processResponse;
http_request.send(content);
return;
}
if(method.toLowerCase()=="post")
{
http_request.open(method,url,true);
http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
http_request.onreadystatechange=processResponse;
http_request.send(content);
return;
}
}
function getResult()
{
if(window.http_request.readyState==4)
{
if(window.http_request.status==200)
{
//这是返回的结果
var rText=window.http_request.responseText;
//处理结果
if(rText=="true")
{
alert("用户名称已经存在");
}else{
alert("用户名称可以使用");
}
}
}
}
//调用
sendRequest("POST","user.do","userName="+name,getResult);
浏览量:2
下载量:0
时间: