莫相离 发表于 2015-1-18 11:22:46

了解下JAVA的在Java中静态实行类的静态办法

一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。
在Java中,经由过程Class.forName()办法能够静态决意加载哪个类,这个功效关于不异接口的分歧完成来说十分有效。好比关于计划好的数据库毗连池接口,我们能够有多种的接话柄现类来完成不异的功效,同时用户能够复杂的经由过程修正设置文件来指定实践利用哪个完成类,在源代码内里经由过程读取设置文件信息,并用Class.forName(configClassName).getInstance()就能够机关一个特定的完成类实例,而不必每次修正源代码。如许关于程序来说只用体贴接口的界说,用户只用举行设置文件的设置就完成了统一功效的分歧完成的切换。
可是假如完成类必要经由过程静态办法来举行初始化的时分,静态加载的历程就会庞大一些。一样的以数据库毗连池为例,一般毗连池的机关函数城市被界说为公有的,而经由过程自界说的getInstance()静态办法来失掉独一实例。这类情形下复杂的经由过程Class.forName().getInstance()就没法准确机关实例。
幸亏Java所供应的反射机制(Reflection)为我们供应了完全了探悉类外部布局的办法。经由过程反射机制,我们可以完成基础上一切的运转时决意的举措(固然这一完成要比其他静态言语,好比PHP,的eval()的利用要庞大的多)。
上面经由过程实践的例子申明怎样在运转时静态会见类的静态办法。
-------------------------------------------------------
*/
importjava.lang.reflect.*;
publicclassmyTestClass{
 privatestaticObjectpLock=newObject();
 privatestaticmyTestClassp_instance=null;
 privateStrings_configName="";
 privatebooleanb_isFromResource=true;
 publicstaticObjectgetInstance(StringsConfigName,
 BooleanbIsFromResource){
  synchronized(pLock){
   if(null==p_instance){
    p_instance=newmyTestClass(sConfigName,bIsFromResource);
   }
  }
  returnp_instance;
 } 
 privatemyTestClass(StringsConfigName,BooleanbIsFromResource){
  s_configName=sConfigName;
  b_isFromResource=bIsFromResource.booleanValue();
 }
 publicvoidechoInfo(){
  System.out.println("currentarguments:configName=["+
   s_configName+"],isFromResource=["+b_isFromResource+"]");
 }
 publicstaticvoidmain(String[]args)throwsException{
  //设置办法的传进参数的范例.
  Class[]parameterTypes=newClass[]{
   java.lang.String.class,
   java.lang.Boolean.class
  };
  MethodmGetInstance=null;
  StringclassName="myTestClass";
  ClasscurTestClass=Class.forName(className);
  try{
   mGetInstance=curTestClass.getMethod("getInstance",parameterTypes);
  }
  catch(NoSuchMethodExceptione){
   e.printStackTrace();
   mGetInstance=null;
  }
  if(mGetInstance!=null){
   myTestClasspObj=(myTestClass)
    mGetInstance.invoke(null,newObject[]{
     "src/myconfig.properties",
     Boolean.FALSE
    }
   );
   pObj.echoInfo();
  }
  else{
   throw
    newException("myTestInitFailedfromclass"+
     className+
     System.getProperty("line.seperator","
")+
     "methodgetInstance(String,Boolean)exists.");
  }
 }
}

比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。

兰色精灵 发表于 2015-1-20 07:48:01

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

蒙在股里 发表于 2015-1-20 13:27:34

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

小魔女 发表于 2015-1-22 06:46:22

是一种语言,用以产生「小应用程序(Applet(s))

只想知道 发表于 2015-1-24 12:49:11

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

海妖 发表于 2015-2-4 13:11:39

是一种使网页(Web Page)产生生动活泼画面的语言

简单生活 发表于 2015-2-5 23:03:07

是一种语言,用以产生「小应用程序(Applet(s))

精灵巫婆 发表于 2015-2-6 17:30:45

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

深爱那片海 发表于 2015-2-17 17:34:50

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

透明 发表于 2015-3-4 12:24:18

是一种为 Internet发展的计算机语言

分手快乐 发表于 2015-3-8 18:11:50

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

再见西城 发表于 2015-3-20 13:17:28

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
页: [1]
查看完整版本: 了解下JAVA的在Java中静态实行类的静态办法