-
2006-04-03
C# to Java 代码转换过程记录
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://skyhorse.blogbus.com/logs/2185258.html
C# -- > java 过程中遇到的问题记录及解决
author:lijun
date:2006-01-020. 预备知识
C# namespace -- java package
object x --- Object x
enum -- jdk 1.5 support , --> static final int
java 的一个class 文件存在多个class时,只能有一个是public类型的。
lock -- synchrionized
ref -- 地址引用。
void func(ref xx) --- xxtype func(xx)
使用时 xx = func(xx);
当多个ref时,只好用全局变量来实现此效果。
as xx -- (xx) 强制类型转换。
string -- String 改变大小写. suggest match case,match whole word then replaceAll.
ToString() -- toString()
bool --- boolean
object --- Object
Console.WriteLine(str); --- System.out.println(str);
wait,pulse,pulseall -- wait, notify,notifyall
strFromList.Trim(); --- strFromList.trim();
strFragAttr.ToLower().Equals(strSelect.ToLower())
--- strFragAttr.toLowerCase().equals(strSelect.toLowerCase()
strSql.Substring(nFromIndex,nWhereIndex-nFromIndex) --- strSql.substring(nFromIndex,nWhereIndex)
// 分割字符
String[] s=strTableField.Split(new char[]{'.'}); --- String[] s=strTableField.split("\\.");
// 判断字符串相等 , 如果在java中 用 ==有时会出现问题。
str1 == str2 --- str1.equals(str2)// 有关foreach转换成 for 循环要这样来转换:
foreach(ArrayList arr in arrConjunctiveNF) --->
for(int j=0;j<=arrConjunctiveNF.size()-1;j++)
{
ArrayList arr =(ArrayList)(arrConjunctiveNF.get(j));array[j]; --- arraylist.get(j);
array.Count --- array.size();Hashtable tableJoinAttributes=Hashtable.Synchronized(new Hashtable());
--- =new Hashtable(); //Hashtable is synchronized.
or --- Map m = Collections.synchronizedMap(new HashMap(...));PredicateElem e=arr[0] as PredicateElem; --- PredicateElem e = (PredicateElem)arr[0];
DictionaryEntry --- Map.Entry
arr.RemoveAt(i); --- arr.remove(i);
arr.sort() ---- Collections.sort(arr);arrAttr.Add(e.leftOpValue); --- arrAttr.add(e.leftOpValue)
tableJoinAttributes[leftTable] --- get(leftTable);
tableJoinAttributes[leftTable]=newArr; --- this.tableJoinAttributes.put(leftTable,newArr);
tableJoinAttributes.Contains(leftTable)
-- tableJoinAttributes.containsKey(leftTable)stack.Push() Pop() --- stack.push() pop()
foreach(DictionaryEntry entry in this.tableJoinAttributes)
{
ArrayList arr=entry.Value as ArrayList;
this.TrimEqual(arr);
}
------>
Set entrys = tableJoinAttributes.entrySet();
Iterator it = entrys.iterator();
while(it.hasNext()){
ArrayList arr = (ArrayList)((Map.Entry)it.next()).getValue();
TrimEqual(arr);
}
又一个例子
tableIndexCounts=new Hashtable();
Foreach(Dictionaryentry Entry In Item.Tableindexs)
{
Tableindexcounts[Entry.Key]=(Entry.Value As Hashtable).Count;
}
---->
tableIndexCounts=new Hashtable();
Set entrys = item.tableIndexs.entrySet();
Iterator it = entrys.iterator();
while(it.hasNext())
{
Map.Entry entry = (Map.Entry)it.next();
tableIndexCounts.put(entry.getKey(),((Hashtable)entry.getValue()).size());
}对于HashMap 之类的也可以用2个Iterator 同步访问Key & value.
Class的访问权限:
每个编译单元(文件)仅能有一个public class。即:只能拥有一个由public class所表现的单一public接口。可以拥有许多个支持用的friendly classes(默认的访问权限,不需要任何关键字)。如果生命不止一个public class,编译器会给出错误。
public class的名称必须跟编译单元(文件)名称相同。
编译单元内可以不含任何public class,所以可以任意给定文件名(这个以前不知道)。
// 有关实现接口interface的转换
public class RangeEndPoint:IComparable --- public class RangeEndPoint implements Comparable
CompareTo() --- compareTo()
public class myexample:IComparer
{
public int Compare(object x, object y){}
}
--->
public class myexample implements Comparator{
public int compare(Object o1, Object o2) {
//Returns:a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
return 0;
}
// optional
public boolean equals(Object obj) {
return false;
}
}candidate.Sort(new CompareOfTableHorFrag());
---> Collections.sort(candidate,new CompareOfTableHorFrag());
or --->
TableNameAndJoinInfo[] candidate_convert=(TableNameAndJoinInfo[])candidate.toArray();
Arrays.sort(candidate_convert,new CompareOfTableHorFrag());
[Serializable]
---> implements Serializable// c# 的thread 方法名无所谓
ThreadClassExec exec=new ThreadClassExec();
Thread threadListen=new Thread(new ThreadStart(exec.ListenThreadMethod));
threadListen.Start();
---> Thread threadListen=new Thread(new implemtsRunableClass())
class implemtsRunableClass implements Runable{
public void run(){
}}
threadListen.start();int nParentIndex; arrBegin.add(nParentIndex)
--->
arrBegin.add(new Integer(nParentIndex));dataTable,dataTable.Rows ---> CachedRowSet
dataTable.Rows.Count ---> dataTable.size()DataRow row=this.dataTable.Rows[i];
---> java 的5.0 版本的 rowset 不提供row , 只能通过metadata得到列数,再遍历
ResultSetMetaData rsm= dataTable.getMetaData();
while(crs_down.next()) {
System.out.print(" "+crs_down.getObject(1));key.GetType()==typeof(string)
---> if(key.getClass()==String.class)
or --> if(key instanceof String) 但是这个好像有是父类时仍相等的问题。不是完全相等.
System.Data.DataTable.Clone() ,
---->
CachedRowSet.createCopySchema() ,Deep Copy:
System.Data.DataTable.Copy()
----> CachedRowSet.createCopy();Thread.CurrentThread.Name
---> Thread.currentThread.getName();随机文章:
Sql Drived Web Fast Develope Solution 2006-04-03分布式数据库实现摘要 2006-04-03通用简单html报表的设计及实现 2004-06-12数据结构设计提交模板(2003-12) 2004-04-252003年某项目具体总结 2004-04-25
收藏到:Del.icio.us
引用地址:







