❶ 在java中没有C#的delegate类型,ref和out类型的参数,那在Java中如何变通地实现相同功能
delegate你可以用相关对象的addXXXListener实现,如果没有你想要的listener,你可以自己写一个,然后在set方法里面通知这些listener就可以了,比方你要监视Obj的属性变化,可以这样,先定义一个借口PropertyChangeListener{public void execute();}
class Obj{
List<PropertyChangeListener> listeners;
void firePropertyChanged(PropertyChangeEvent e){
for (PropertyChangeListener l:listeners){
l.execute(e);
}
}
void addPropertyChangeListener(PropertyChangeListener l){
listeners.add(l);
}
}
ref就是传引用,随便一个对象就可以传引用,除了String,还有out,你直接在函数里面修改传引用的参数就ok
❷ Java里面有计算误差函数erf()的方法么在哪个类
C# 里没有erf 函数 ,你是不是想说ref 的用法
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。简单点说就是,使用了ref和out的效果就几乎和C中使用了指针变量一样。它能够让你直接对原数进行操作,而不是对那个原数的Copy进行操作。
❸ java中可以用ref吗
java 与SQL可以用ref接口来操作 REF 值是一个指向 SQL 结构类型的逻辑指针,所以在默认情况下 Ref 对象也是一个逻辑指针。因此,以 Ref 对象的形式检索 SQL REF 值不会在客户端上实现结构类型的属性。
不知道你用ref来做什么,JAVA垃圾回收中也和它有关系,你可以去详细了解下
❹ 在JAVA中有没有类似于c#中的ref关键词,实现引用传参
c#与java的区别:
1.属性:
java中定义和访问均要用get和set方法,可以不成对出现。
c#中是真正的属性,定义时get和set必须同时出现,房问时用.号即可。不用get,set
2.对象索引
就是对象数组
public Story this [int index] {
3.C#中,不用任何范围修饰符时,默认的是protect,因而不能在类外被访问.
4.因为JAVA规定,在一个文件中只能有一个public类,而且这个类的名称必须与文件名一模一样,这是一个区别
5.在C#中,它是以Main方法来定位入口的.如果一个程序中没有一个名为Main的方法,就会出"找不到入口的错误".不要把Main写成main哟
6.C#预定义的简单数据类型比Java多。例如,C#有unit,即无符号整数
7.忘掉Java中的static final修饰符。在C#中,常量可以用const关键词声明
C#的设计者还增加了readonly关键词,readonly域只能通过初始化器或类的构造函数设置
8.公用类的入口点:c#是可以对Main进行重载(java中是main),允许有int返回值和空参数的Main
9.在Java中,switch语句只能处理整数。但C#中的switch语句不同,它还能够处理字符变量。请考虑下面用switch语句处理字符串变量的C#代码
10.C#没有>>>移位操作符
11.goto关键词:
Java不用goto关键词。在C#中,goto允许你转到指定的标签。不过,C#以特别谨慎的态度对待goto,比如它不允许goto转入到语句块的内部。在Java中,你可以用带标签的语句加上break或continue取代C#中的goto。
12.int[] x = ;
int x[] = ;
但在C#中,只有第一行代码合法,[]不能放到变量名字之后。
13.与Java不同的是,C#允许为名称空间或者名称空间中的类指定别名:
using TheConsole = System.Console;
14.在Java中,包的名字同时也是实际存在的实体,它决定了放置.java文件的目录结构。在C#中,物理的包和逻辑的名称之间是完全分离的
.NET中包的实体称为程序集(Assembly)。每一个程序集包含一个manifest结构。manifest列举程序集所包含的文件,控制哪些类型和资源被显露到程序集之外,并把对这些类型和资源的引用映射到包含这些类型与资源的文件。程序集是自包含的,一个程序集可以放置到单一的文件之内,也可以分割成多个文件。.NET的这种封装机制解决了DLL文件所面临的问题,即臭名昭着的DLL Hell问题。
15.在Java中,java.lang包是默认的包,C#中不存在默认的包
16.C#中的访问修饰符与Java中的基本对应,但多出了一个internal。简而言之,C#有5种类型的可访问性,如下所示:
public:成员可以从任何代码访问。
protected:成员只能从派生类访问。
internal:成员只能从同一程序集的内部访问。
protected internal:成员只能从同一程序集内的派生类访问。
private:成员只能在当前类的内部访问。
17.由于C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词
18.与Java不同,C#中的接口不能包含域(Field)。
另外还要注意,在C#中,接口内的所有方法默认都是公用方法。在Java中,方法声明可以带有public修饰符(即使这并非必要),但在C#中,显式为接口的方法指定public修饰符是非法的。例如,下面的C#接口将产生一个编译错误。
19.C#中的is操作符与Java中的instanceof操作符一样,两者都可以用来测试某个对象的实例是否属于特定的类型。在Java中没有与C#中的as操作符等价的操作符。as操作符与is操作符非常相似,但它更富有“进取心”:如果类型正确的话,as操作符会尝试把被测试的对象引用转换成目标类型;否则,它把变量引用设置成null。
20.C#仍旧保留了C++的内存手工管理方法,它适合在速度极端重要的场合使用,而在Java中这是不允许的
21.在C#中,所有的异常都从一个名为Exception的类派生
22.枚举器即enum类型(java无),把它作为一个变量值的类型使用,从而把变量可能的取值范围限制为枚举器中出现的值。
23.结构(Struct)与类很相似,而结构是一种值类型,它存储在栈中或者是嵌入式的,结构可以实现接口,可以象类一样拥有成员,但结构不支持继承
24.属性声明语法的第一部分与域声明很相似,第二部分包括一个set过程和/或一个get过程
25.传值方式:
在java中简单数据类型的值传参时,都以传值方式;
在c#中如果加ref则会以引用的方式传值(方法内部改变该参数,则外部变量一起跟着变);
加out与ref基本相同,但out不要求参数一定要初始化.
26.c#保留了指针。unsafe
27.代理:代理(delegate)可以看作C++或者其他语言中的函数指针
代理用来封装可调用方法。你可以在类里面编写方法并在该方法上创建代理,此后这个代理就可以被传递到第二个方法。这样,第二个方法就可以调用第一个方法。
代理是从公共基类System.Delegate派生的引用类型。定义和使用代理包括三个步骤:声明,创建实例,调用。代理用delegate声明语法声明。
❺ java操作dll时,怎么取ref回调函数返回的值
Variant outData = new Variant("value", true); //这样应该就是ref string了
Variant var = Dispatch.call(dotnetCom,"BUSINESS_HANDLE","00","QXWEB",outData);
System.out.println("返回的值:"+outData.getStringRef());
❻ java ref 关键字
把Double d,定义在一个自己的对象中,再传自己的对象作函数参数
❼ 在Java 中顶用什么方法来代替C#中ref或out传递参数
对CLR来说out和ref没有区别,有区别的,只是C#编译器为了区分输入输出的引用而已。 也就是说,out和ref在Java中使用java的引用语法就好了。java没有区分out和ref功能,因为对java来说根本就是一回事。
❽ 求助java调用dll中ref参数传值的问题
值传递传递的是内存中的值,引用传递传递的是内存中的地址。
举个例子:
String str = new String("test");
解释:此例子中str值传递传的是test,引用传递传的是str在内存中的地址。
❾ java里面src和ref这两个属性分别是什么意思
<img> 标签的 src 属性的值是:图像文件的 URL,也就是引用该图像的文件的的绝对路径或相对路径。
<link> 标签的 rel 属性规定:当前文档与被链接文档之间的关系。
举例说明:
html文件:
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
<title>练习使用HTML</title>
<!--
rel="stylesheet"表示调用的是一种样式。
href="css/index.css"表示外部样式文件的路径
-->
<linkrel="stylesheet"href="css/index.css"/>
</head>
<body>
<h1>我的第一个标题</h1>
<p>内容</p>
<!--图像文件的URL-->
<imgsrc="img/book.png"/>
</body>
</html>
css文件:
h1{
color:red;
background-color:greenyellow;
}
效果展示:
❿ webservice中定义的ref参数 用java怎么调用
public int removeGroupUsers(String guid, String usersId) {
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(UrlUtils.mucWebServiceUrl());
call.setTimeout(Integer.parseInt(IniReader.getValue("PUBLIC", "CONNECTION_TIME_OUT")));
call.setOperationName(new QName(soapaction, "removeGroupUsers")); // 设置要调用哪个方法
// 设置要传递的参数
call.addParameter(new QName(soapaction, "id"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName(soapaction, "userIds"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
// call.setReturnType(new QName(soapaction,"SearchPlanFlightJson"),
// String.class); // 要返回的数据类型(自定义类型)
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_INT);// (标准的类型)
call.setUseSOAPAction(true);
call.setSOAPActionURI(soapaction + "removeGroupUsers");
int result = (Integer) call.invoke(new Object[] { guid, usersId });// 调用方法并传递参数
// log.info("删除群组成员[" + usersId + "],执行状态 [" + result + "]");
return result;
}
catch (Exception e) {
if (Constants.EXCEPTION_CHANGED_RUN) {
Constants.EXCEPTION_CHANGED_RUN = false;
} else {
Constants.EXCEPTION_CHANGED_RUN = true;
}
Constants.LOG_PUB.info("WebServiceImpPub removeGroupUsers RemoteException . ", e);
}
return -100;
}