岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> 其他技术 >> Java正文
Java和.NET互操作究竟有什么用?
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-23 9:51:58
m.Text.StringBuilder result = new System.Text.StringBuilder();

    result.Append( "MyDotNetClass2[test=[" );
   for (int i = 0; i < test.Length; i++)
   {
    if( i != 0 )
     result.Append( "," );
    result.Append( "" + test[i] );

   }
   result.Append( "]]" );

   return result.ToString();  }
}

///
/// 这个类型阐明了如何实现等同序列化的目标。
/// 通过为.NET类型添加JavaPeer属性。
/// 创建相似的用法来继承Java.Io.Serializable
/// 但是有些不很方便的地方是,在需要使用Serializable的时候,
/// 在PureDotNetType处不能使用生成的实例。
/// JavaPeer属性列出了两个不同的属性:
/// 分别是PeerType 和 PeerMarshaller。
/// 第一个属性指定保持数据的Java类型,
/// 第二个属性指定如何序列化.NET实例来生成Java实例及其逆过程。

///
[JavaPeer(PeerType= "com.codemesh.peer.SerializablePeer",
           PeerMarshaller= "Codemesh.JuggerNET.ReflectionPeerValueMarshaller")]
public class PureDotNetType
{
  private char ch = 'a';
     ///
  /// 一个字段的设置来帮助我们阐明从Java中读出的实际信息。

  ///
  public char CharProperty
  {
   set { ch = value; }
  }

  public override string ToString()
  {
   return "PureDotNetType[ch='" + ch + "']";
  }
}

///
/// 类型阐明了控制同等序列化细节的字段属性。

///
[JavaPeer(PeerType="com.codemesh.peer.SerializablePeer",
           PeerMarshaller="Codemesh.JuggerNET.ReflectionPeerValueMarshaller")]
public class PureDotNetType2
{
  ///
  /// 在去除编组之后的字段值将一直保持是'42',因为它的值没有被序列化或反序列化。

  ///
  [NonSerialized]
  public int    NotUsed = 42;

  ///
  /// 在去除编组之后的字段值将一直保持是空值,因为它的值没有被序列化或反序列化。

  ///
  [JavaPeer(Ignore=true)]  public string   AlsoNotUsed = null;

  ///
  /// 这个字段的值经过序列化或反序列化,
  /// 但是对于Java,这个字段是归类在'CustomFieldName'之下。
  /// 你可能通常不会关心Java的名称,但是如果Java程序可以访问peer对象,
  /// 并且需要访问自己的数据,则可以对其加以关注。
  ///
  [JavaPeer(Name="CustomFieldName")]
  public int    OnlyUsedField = 2;

  public override string ToString()
  {
   return "PureDotNetType2[NotUsed=" + NotUsed +
                 ", AlsoNotUsed=" + ( AlsoNotUsed == null ? "null" : AlsoNotUsed ) +
                 ", OnlyUsedField=" + OnlyUsedField + "]";
  }
}

public class Peer
{  public static void Main( string[] args )
  {
   try
   {
    IJvmLoader loader = JvmLoader.GetJvmLoader();

    if( args.Length > 1 && args[ 0 ].Equals( "-info") )
     ;//loader.PrintLdLibraryPathAndExit();

    // 生成哈希表的实例
    Java.Util.Hashtable ht = new Java.Util.Hashtable();

    // 创建一些纯.NET实例
    object   obj1 = new MyDotNetClass();
    object   obj2 = new

上一页  [1] [2] [3] [4] [5] 下一页


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:WebSyue@163.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    惊天动地私服 天龙八部私服 天龙八部私服 热血江湖私服 天龙八部私服 bet365 bet365 传世私服 传奇世界私服