The method is deprecated.如果这个方法过时,怎么知道最新的方法是什么?F3进入该类,查看对应的可用方法即可 。
Java中如何正确而优雅的终止运行中的线程Java中终止线程的方式主要有三种:1、使用stop()方法,已被弃用 。原因是:stop()是立即终止,会导致一些数据被到处理一部分就会被终止,而用户并不知道哪些数据被处理,哪些没有被处理,产生了不完整的“残疾”数据,不符合完整性 , 所以被废弃 。So, forget it!2、使用volatile标志位看一个简单的例子:首先,实现一个Runnable接口,在其中定义volatile标志位,在run()方法中使用标志位控制程序运行public class MyRunnable implements Runnable {//定义退出标志,true会一直执行 , false会退出循环//使用volatile目的是保证可见性,一处修改了标志,处处都要去主存读取新的值,而不是使用缓存public volatile boolean flag = true;public void run() {System.out.println("第" + Thread.currentThread().getName() + "个线程创建");try {Thread.sleep(1000L);} catch (InterruptedException e) {e.printStackTrace();}//退出标志生效位置while (flag) {}System.out.println("第" + Thread.currentThread().getName() + "个线程终止");}}然后,在main()方法中创建线程 , 在合适的时候,修改标志位,终止运行中的线程 。public class TreadTest {public static void main(String[] arg) throws InterruptedException {MyRunnable runnable = new MyRunnable();//创建3个线程for (int i = 1; i <= 3; i++) {Thread thread = new Thread(runnable, i + "");thread.start();}//线程休眠Thread.sleep(2000L);System.out.println("——————————————————————————");//修改退出标志 , 使线程终止runnable.flag = false;}}最后,运行结果,如下:第1个线程创建第2个线程创建第3个线程创建--------------------------第2个线程终止第1个线程终止第3个线程终止3、使用interrupt()中断的方式,注意使用interrupt()方法中断正在运行中的线程只会修改中断状态位,可以通过isInterrupted()判断 。如果使用interrupt()方法中断阻塞中的线程,那么就会抛出InterruptedException异常,可以通过catch捕获异常 , 然后进行处理后终止线程 。有些情况 , 我们不能判断线程的状态,所以使用interrupt()方法时一定要慎重考虑 。
ajax同步警告ajax出现的同步警告是无法避免的 , 其实是造成主线程锁死主要还是XMLHttpRequest没有设置超时处理 。jquery ajax异步的执行方案:1、添加async:false.即修改为同步,代码如下:function getAjaxReturn() { var bol=false; $.ajax({ type:"POST", async:false, http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx", data:"username="+vusername.value, success:function(msg){ if(msg=="ok"){ showtipex(vusername.id,"该用户名可以使用",false) // return true; bol=true; } else { showtipex(vusername.id,"该用户已被注册",false); vusername.className="bigwrong"; //return false; } } }); return bol; } 2、 通过传入一个函数解决这个问题,代码:function getAjaxReturn(success_function,fail_function) { var bol=false; $.ajax({ type:"POST", http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx", data:"username="+vusername.value, success:function(msg){ if(msg=="ok"){ showtipex(vusername.id,"该用户名可以使用",false) success_function(msg); } else { showtipex(vusername.id,"该用户已被注册",false); vusername.className="bigwrong"; fail_function(msg); //return false; } } }); function success_function(info) { //do what you want do alert(info); } funciont fail_function(info) { //do what you want do alert(info); }
java中resume() stop()方法已经过时用什么方法代替呢stop
@Deprecated
public final void stop()
已过时 。该方法具有固有的不安全性 。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果) 。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为 。stop 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代 。目标线程应定期检查该变量,并且如果该变量指示它要停止运行 , 则从其运行方法依次返回 。如果目标线程等待很长时间(例如基于一个条件变量),则应使用 interrupt 方法来中断该等待 。有关更多信息,请参阅《为何不赞成使用 Thread.stop、Thread.suspend 和 Thread.resume?》 。
强迫线程停止执行 。
如果安装了安全管理器,则以 this 作为其参数调用 checkAccess 方法 。这可能引发 SecurityException(在当前线程中) 。
如果该线程不同于当前线程(即当前线程试图终止除它本身以外的某一线程),则安全管理器的 checkPermission 方法(带有 RuntimePermission("stopThread") 参数)也会被调用 。这会再次抛出 SecurityException(在当前线程中) 。
无论该线程在做些什么,它所代表的线程都被迫异常停止,并抛出一个新创建的 ThreadDeath 对象,作为异常 。
停止一个尚未启动的线程是允许的 。如果最后启动了该线程,它会立即终止 。
应用程序通常不应试图捕获 ThreadDeath , 除非它必须执行某些异常的清除操作(注意,抛出 ThreadDeath 将导致 try 语句的 finally 子句在线程正式终止前执行) 。如果 catch 子句捕获了一个 ThreadDeath 对象,则重新抛出该对象很重要,因为这样该线程才会真正终止 。
对其他未捕获的异常作出反应的顶级错误处理程序不会打印输出消息,或者另外通知应用程序未捕获到的异常是否为 ThreadDeath 的一个实例 。
抛出:
SecurityException - 如果当前线程不能修改该线程 。
另请参见:
interrupt(), checkAccess(), run(), start(), ThreadDeath, ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable), SecurityManager.checkAccess(Thread), SecurityManager.checkPermission(java.security.Permission)
关闭线程,最好不要用stop()或destory(),那要用什么方法呢?用sleep() 使当前线程停止运行,进入阻塞态 。可以指定休眠时间,一旦指定时间结束后,该线程也不一定会立即被唤醒 。通常是一些别的因素,比如 系统时间的准确度不高或者别的线程干扰都有可能影响这个线程是继续阻塞 还是 进入运行状态 。
wait()也可以 和sleep()类似 不过是被唤醒或者等够了指定的时间就进入运行态 不指定时间就永远等待
deprecated是什么意思checks for usages of deprecated classes and methods in xml在XML的过时的类和方法使用支票checks for usages of deprecated classes and methods in xml在XML的过时的类和方法使用支票
C语言的定义问题,关于__attribute__的用法,望大家帮忙解答便于记忆和阅读程序 , GPIO_T是代表io口时钟的结构体,都是结构体,一样的标识,不利于阅读
__attribute__ ((__packed__)); 怎么用?1. __attribute__是GNUC对标准C语法的扩展,是GNU C的一大特色,可以用于设置函数的属性 , 变量的属性 , 类型的属性
packed属性:使用该属性可以使得变量或者结构体成员使用最小的对齐方式,即对变量是一字节对齐,对域(field)是位对齐 。
使用该属性对 struct或者union类型进行定义,设定其类型的每一个变量的内存约束 。当用在 enum类型定义时 , 暗示了应该使用最小完整的类型。
下面的例子中,x成员变量 使用了该属性,则其值将紧放置在a的后面:
structtest
{
chara;
intx[2] __attribute__ ((packed));
};
像下面的结构体,结构体的长度,就是各个变量长度的和
struct student
{
char name[7];
uint32_t id;
char subject[5];
} __attribute__ ((packed));
下面的 例子中 , my-packed-struct类型的变量数组中的值将会紧紧的靠在一起,但内部 的成员变量s不会被“pack”,如果希望内部的成员变量也被packed,my- unpacked-struct也需要使用packed进行相应的约束 。
struct my_packed_struct
{
charc;
inti;
structmy_unpacked_structs;
} __attribute__ ( (__packed__) );
2. __packed是进行一字节对齐 。使用_packed一般会以降低运行性能为代价,由于大多数cpu处理数据在合适的字节边界数的情况下会更有效,packed的使用会破坏这种自然的边界数 。
typedef struct1
{
char x;
int y;
}struct1;
typedef __packed struct2
{
char x;
int y;
}struct2;在32位的ARM SDT编译器中
sizeof(struct1)值为8
sizeof(struct2)值为5;
extern volatile unsigned int WREG0 __attribute__((__sfr__,__deprecated__,__unsafe__))这个问题都这么久了,都没人答 。我刚刚也遇到了这个问题 , 我用的是pic24fj128gXXX的,这好像是MPLAB自己带的针对于它这款芯片特定的头文件,这个头文件中有好些这种定义 。具体的我也不太清楚,貌似在这个系列的单片机上开发 , 这个头文件需要了解,也不是非得弄得特别清楚 。我差了些资料 , 就知道第一个是说明WREG0,__attribute__(sfr)说明了这个变量是地址,因为在后边的我的开发代码中没有涉及到寄存器的地址,可能是它自己的编译器就这么编译解释我们的代码 , 所以不用太较真 。说了这么多 , 可能你现在已经解决了,我也只是说一下我的经验,好让后来的人搜到这个问题之后会有个大致的了解 。就这样了,祝你好运,节节登高!
-Wno-deprecated-declarations编译选项什么意思?这个编译选项是用来关闭Xcode中关于废弃API的警告
比如 你代码中使用了某个已经被废弃的API 这是Xcode会出现一个警告
这时你就可以通过这个编译选项 关闭掉这个警告 。
java中的src文件和jre System library都是什么啊src是源码目录,jre是运行环境 , library是java运行时需要的类库
eclipse使用中碰到一个疑惑因为每个开发工具所使用的jdk不一定相同~所以要选择你说那个路径(环境变量)~也就是选择jdk以免版本混淆造成冲突(比如Oracle安装时候也会自动安装上一个跟自己匹配的jdk版本)
后面那个提示应该就是环境变量配置不正确造成的 ,再者就是没有引入需要用的jar包 。
android直接运行java文件main方法,报错1)右键入口类(含有Main方法的)==>Run Configurations==>双击(Java Application)==>New==>(2)在标签Main里选好相应的ProjectName和要运行ClassName,(3)选标签ClassPath中的Bootstrap Entries ,再从右边点Advance==>Add Library==>JRE System Library,完成,然后将JRE System Library 点中再点Up按钮 , OK了
eclipse中启动tomcat的问题我之前是两个项目在一起做(一个tomcat5,一个tomcat6),要经常要版本转换
这个要把原来在eclipse环境中window--属性--……配置的Tomcat6的版本换为tomcat7 , 再选择tomcat7的路径 。
eclipse6.0->windows->Preference->myeclips->server->Tomcat选择版本->enable 接下来把Tomcat和JDK的路径配置下(这个的话不改好像没不会报错,但是还有另一个路径我忘了,也是改版本,但它的选择不是以单选的形式,是以下拉的形式,就是你当前用的哪个版本就选哪个版本了
)
myeclipse 创建怎么没有src 就一个JRE 急 !! 在线等 。改成java视图就可以了
Java中如何通过代码知道某个方法或某个类是否在声明时被标注为deprecated?给你一个主函数参考一下吧,其实非常的简单,这个方法是JAVA TIGER的新特性
public static void main(String[] args) {
try {
System.out.println(String.class.isAnnotationPresent(Deprecated.class));
System.out.println(String.class.getMethod("getBytes",int.class,int.class, byte[].class,int.class).isAnnotationPresent(Deprecated.class));
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
例子用的是String类做的示范 。可以自由换成其它类 。
-------------------------------------------------------
这个有帮助吗
public static void main(String[] args) {
try {
System.out.println(String.class.getDeclaredMethods().length);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
-----------------------------------------------------
5.0的JDK生成1.4版本的CLASS字节码留下了@deprecated , 但是其它的JAVADOC都被丢掉了 。
在不提供这种反射机制的1.4时代,我们都非常怀疑读那个@deprecated的可能性 。也许你可以试试用读字节流的方法判断@deprecated是否在关注的地方出现 。
如何正确地使用Java的@deprecated 标注起到注释说明的作用
java的类或方法中通常在方法上或类上注释的地方有个@,是什么含义?@呢是Java1.5之后引入的新功能 。
主要作用:
1、起到注释说明的作用,如@deprecated 表示本方法为过时的方法 , 建议其他开发者不要使用;
2、在Java设计模式中使用(设计框架),减小程序耦合度,如在Spring中,@Inject表示,从配置文件中读取初始化变量 , 并初始化该对象或值 。如在EJB3中,使用@Table(name="TABLE")表示,本与本Bean相关联的数据库表名称为TABLE;
3、其他 , 开发人员可以自定义标注,在调用中使用getAnnotation();(可能拼写有误),从而提高代码的扩展性
如何正确地使用Java的@deprecated 标注如何正确地使用Java的@deprecated 标注
Java注释中的@deprecated用于在用Javadoc工具生成文档的时候 , 标注此类/接口、方法、字段已经被废止 。
java注释的java注解Annotation(注解)是JDK5.0及以后版本引入的 。它可以用于创建文档 , 跟踪代码中的依赖性,甚至执行基本编译时检查 。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类 。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据的访问 。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件中出现 。元数据的作用如果要对于元数据的作用进行分类,大致可分为三类:编写文档:通过代码里标识的元数据生成文档 。代码分析:通过代码里标识的元数据对代码进行分析 。编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查 @OverrideJava代码packagecom.iwtxokhtd.annotation;/*** 测试Override注解*@authorAdministrator**/publicclassOverrideDemoTest {//@OverridepublicString tostring(){return测试注解;}}@Deprecated的作用是对不应该在使用的方法添加注解,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的@deprecated标记有相同的功能 , 准确的说,它还不如javadoc @deprecated,因为它不支持参数,使用@Deprecated的示例代码示例如下:Java代码packagecom.iwtxokhtd.annotation;/*** 测试Deprecated注解*@authorAdministrator**/publicclassDeprecatedDemoTest {publicstaticvoidmain(String[] args) {//使用DeprecatedClass里声明被过时的方法DeprecatedClass.DeprecatedMethod();}}classDeprecatedClass{@DeprecatedpublicstaticvoidDeprecatedMethod() {}}@SuppressWarnings,其参数有:deprecation,使用了过时的类或方法时的警告unchecked , 执行了未检查的转换时的警告fallthrough , 当 Switch 程序块直接通往下一种情况而没有 Break 时的警告path,在类路径、源文件路径等中有不存在的路径时的警告serial,当在可序列化的类上缺少serialVersionUID 定义时的警告finally,任何 finally 子句不能正常完成时的警告all , 关于以上所有情况的警告 packagecom.iwtxokhtd.annotation;importjava.util.ArrayList;importjava.util.List;publicclassSuppressWarningsDemoTest {publicstaticListlist=newArrayList();@SuppressWarnings(unchecked)publicvoidadd(String data){list.add(data);
ecshop中Deprecated: preg_replace(): 报错怎么办?------解决方案--------------------
preg_replace_callback($pattern, function($r) { return 与$r相关的值; }, $subject)
你应该给出 cls_template.php 第496行的代码
这样才能给你准确的写法
------解决方案--------------------
那就是
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
如果还有其他的地方报这样的错,就参照这个改.
你试试吧!
ecshop安装后页面出现代码这是怎么回事???登录ftp , 找到根目录下htdocs,将data下的config.php和install.lock删除 , 重新安装一下ecshop系统 , 然后进入后台管理--数据库管理--数据备份 , 选择恢复备份,清除缓存即可 。
ecshop里关于使用了高版本php产生的一个问题 求助$out = "<?php \n" . '$k = ' . preg_replace_callback("/(\'\\$[^,]+)/e" , "stripslashes(trim('\\1','\''));", var_export($t, true)) . ";\n";
直接改成这样试试
本地安装ecshop提示错误!怎么解决PHP5.5以后含有/e 的preg_replace被preg_replace_callback替代了
function eregi is deprecated in报错怎么解决php版本升级后,运行项目 。报Function eregi() is deprecated错误!
在项目里找到ereg()或者eregi()使用此函数的位置;
查找ereg()或者eregi()函数 , 然后全部替换为preg_match()函数 。
刷新当前页面,问题解决?。?
打开PHPmyadmin出现这个错误要在IIS6上使用高版本PHP,必须安装fastCGI扩展
Microsoft FastCGI Extension for IIS 5.1 and 6.0
然后设定一下php.ini中的CGI and FastCGI参数:
fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect =0
cgi.rfc2616_headers=1
望采纳 Thx
Function eregi() is deprecated in /opt/lampp/htdocs/lib.php on line 13eregi改preg_match
给服务器上传了一个PHP源码 数据库都链接上了,但是有一些报错的地方,请高手帮忙看下这个是版本的问题,php5.3以上的版本,已经弃用ereg_replace()和eregi()函数了,换成preg_replace() 和preg_match() 。你可以换函数,或者在这些函数前面加@ 。因为这些都是提醒级错误 。
例如:@ereg_replace/@eregi
php网站安装好以后出现这种情况PHP5.3x后的版本不再支持ereg和eregi
ereg()使用 preg_match() 替代
ereg_replace()使用 preg_replace() 替代
eregi()使用 preg_match() 配合 ‘i’ 修正符替代
eregi_replace()使用 preg_replace() 配合 ‘i’ 修正符替代
用Eclipse编Java提示The method show() from the type Window is deprecated,并且窗口没有出现这个方法已经不建议被使用了,使用另外的方式去实现 。
java中 The method getHours() from the type Date is deprecated 代码怎么改?过时的方法 , 不影响 , 可以继续使用,可能会在未来版本删除 。如果看着不爽,可以在其方法上面加上@SuppressWarnings("deprecation")如:public class $ {@SuppressWarnings("deprecation")public static void main(String[] args) {Date now = new Date();System.out.println(now.getSeconds());}}
怎么样解决The method getYear() from the type Date is deprecated【deprecated】那些方法都不推荐使用了,所以显示黄线 , 这样可以实现你想要的,你看下吧 , 希望对你有帮助
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
int currenYear = calendar.get(Calendar.YEAR);
calendar.set(Calendar.YEAR, currenYear + 2);
java.sql.Date newDate = new java.sql.Date(calendar.getTimeInMillis());
线程stop的时分,显示The method stop is deprecated会有什么后果线程stop的时候,显示The method stop() is deprecated会有什么后果?如下代码所示,在用stop结束线程时,stop被横线划掉了 。而且报这个警告The method stop() from the type Thread is deprecated 。会对线程的执行有影响吗?Java codetran_input = new Thread(new ActTranIn()); tran_input.start(); /**执行SSLSocket接受数据的代码 。。。省略**/ tran_input.stop(); class ActTranIn implements Runnable { public void run() { /**执行SSLSocket发送数据的代码 。。。省略**/ } }会执行的 你可以不用管警告 Thread.stop()有bug的,有时候抛出运行时异常 。所以不见意用这个方法 。
the type query is deprecated怎么解决出这个提示的地方有写解决办法呀. android.support.v7.app.ActionBarActivity is deprecated; use AppCompatActivity instead 意思是 ActionBarActivity 在最新版本的support v7包里面已经不建议使用,建议用 AppCompatActivity
如何正确地使用Java的@deprecated 标注Rule #1: do Javadoc how not to
每当你弃用某方法时,创建JavaDoc告诉其他程序员如何不再使用这个方法 。不要只说“这个方法废弃了,不要用它” 。因为这就是废弃标注和JavaDoc中@deprecated的字面意义,完全没有必要再重复一遍 。Java开发人员作为目标受众,都知道deprecation的意思 。
命名新的方法,取代旧有的 。(使用@link标注!)这可能还不够,新的方法对应的文档将解释如何使用它 。不要在JavaDoc中重复(其字面意义),文档也应遵从DRY原则 。另一方面你可能想要描述怎样替换掉旧方法的调用 , 你可以就重构的细节给出提示 。
Rule #2: do not Javadoc how to
移除过时的JavaDoc文档 。有些人可能争辩:维护遗留代码的用户可能还会需要这些文档 。事实上,他们使用的是旧版本库中的旧版本方法 。旧版本的文档仍旧存在那里,像被刻在石头上(更确切的说是刻在资源仓库的某个版本上) 。含有被废弃掉的方法的实际版本不应包含过时的描述文档,那会鼓励程序员去继续使用 。对于废弃的方法 , 只有一种用法:不去用 。JavaDoc应该被实时描述,如同rule#1所述 。
Rule #3: 不要在JavaDoc中解释
不要在JavaDoc中解释为什么方法被废弃了 。你是一个可靠的的开发,这是你的决定,你的选择,其他人只能忍着 。如果愿意,可以写一篇博客记录这次调整的决策背景 。这可能有帮助,但它不应被写在JavaDoc中 。
JavaDoc的Deprecated API专用来讲解如何不再使用 。
重点是如何(how) 。而不是“为什么不再使用它(why)” 。
Rule #4: do deprecate
如果你觉得需要弃用一方法 , 那就去做吧!如果你害怕你的用户,或不想因你废弃掉一些方法导致你用户体验更加痛苦,这个决定将让你自己痛苦 。尽你所能去让API维持长久的稳定 。但如果有需要被废弃的:立刻扔掉它 。不要因“为何当初设计API时没有考虑到未来的变动”而感到愧疚 。没有人能完美的预见未来 。毕竟 , 如果你知道未来,生活就无趣了 。
java代码疑问 , eclips中讲代码用删除线划掉并提示deprecated是什么情况?您好,提问者:意思是说此方法已过时 , 过时的原因就是有API的类替代了次方法 。提示:可以正常使用的,就是一个提示而已 。
为什么JAVA项目代码中在一个类中只对方法声明,在另一个类中才定义方法,这么做有什么好处么你说的是接口吧,接口就像生活中的协议一样,比如定义人 , 这个接口,然后里面声明了人,有名字,两只手 , 两只脚,然后所有的实现类都必须实现这些方法 。也就是说只要属于人(这个接口)都必须有名字,两只手,两只脚 。
这就像一种规范一样 , 之后所有的实现类都可以有自己的扩展,但是必须实现人这个几口类声明的方法 。
在你以后调用的时候 , 可以直接调用接口,而不必关心实现类的具体实现 。比如数据库的增删改查 , 你定义了接口,然后由不同的实现类去实现 。你在servlet 或者aciton中调用的时候直接调用接口 , 然后你可以用不同的实现类实现不同数据库的增删改查等方法 。
这个时候你的系统就可以实现不同数据库的切换了 。
对了接口还有一个好处就是多继承 。就是一个实现类可以继承多个接口 。这样你的实现类又可以完成多个协议(接口声明)了 。
---------------------
上面是我个人的一些理解,我看到楼上的说的也不错 。
希望我的理解可以帮到楼主 。
ps.建议楼主看一下专业的书籍 。网上的回答毕竟还是不系统的 。
Java 代码中 @ 符号是什么意思?annotation 。
Annotation,是Java5的新特性,下面是Sun的Tutorial的描述,因为是英文,这里我翻译下,希望能够比较清晰的描述一下Annotation的语法以及思想 。Annotation:Release 5.0 of the JDK introduced a metadata facility called annotations. Annotations provide data about a program that is not part of the program, such as naming the author of a piece of code or instructing the compiler to suppress specific errors. An annotation has no effect on how the code performs. Annotations use the form @annotation and may be applied to a program's declarations: its classes, fields, methods, and so on. The annotation appears first and often (by convention) on its own line, and may include optional arguments: JDK5引入了Metedata(元数据)很容易的就能够调用Annotations.Annotations提供一些本来不属于程序的数据,比如:一段代码的作者或者告诉编译器禁止一些特殊的错误 。An annotation 对代码的执行没有什么影响 。Annotations使用@annotation的形势应用于代码:类(class),属性(field),方法(method)等等 。一个Annotation出现在上面提到的开始位置,而且一般只有一行,也可以包含有任意的参数 。@Author("MyName")class myClass() { }
or @SuppressWarnings("unchecked")void MyMethod() { }
Defining your own annotation is an advanced technique that won't be described here, but there are three built-in annotations that every Java programmer should know: @Deprecated, @Override, and @SuppressWarnings. The following example illustrates all three annotation types, applied to methods:
定义自己的Annotation是一个比较高级的技巧 , 这里我们不做讨论,这里我们仅仅讨论每一个Java programer都应该知道的内置的annotations:@Deprecated, @Override, and @SuppressWarnings 。下面的程序阐述了这三种annotation如何应用于methods 。import java.util.List;
class Food {}
class Hay extends Food {}
class Animal {
Food getPreferredFood() {
return null; } /** * @deprecated document why the method was deprecated */
@Deprecated
static void deprecatedMethod() { }
}
class Horse extends Animal {
Horse() {
return;
}
@Override
Hay getPreferredFood() {
return new Hay();
}
@SuppressWarnings("deprecation")
void useDeprecatedMethod() {
Animal.deprecateMethod(); //deprecation warning - suppressed }}
}
}
@DeprecatedThe @Deprecated annotation indicates that the marked method should no longer be used. The compiler generates a warning whenever a program uses a deprecated method, class, or variable. When an element is deprecated, it should be documented using the corresponding @deprecated tag, as shown in the preceding example. Notice that the tag starts with a lowercase "d" and the annotation starts with an uppercase "D". In general, you should avoid using deprecated methods — consult the documentation to see what to use instead.
@Deprecated@Deprecated annotation标注一个method不再被使用 。编译器在一个program(程序?)使用了不赞成的方法,类,变量的时候会产生警告(warning) 。如果一个元素(element:method, class, or variable)不赞成被使用 , 应该像前面的例子里使用相应的@deprecated 标签,并且注意标签的首字母是小写的"d",而annotation时大写的"D" 。一般情况下,我们应该避免使用不赞成使用的方法(deprecated methods),而应该考虑替代的方法 。
@OverrideThe @Override annotation informs the compiler that the element is meant to override an element declared in a superclass. In the preceding example, the override annotation is used to indicate that the getPreferredFood method in the Horse class overrides the same method in the Animal class. If a method marked with @Override fails to override a method in one of its superclasses, the compiler generates an error. While it's not required to use this annotation when overriding a method, it can be useful to call the fact out explicitly, especially when the method returns a subtype of the return type of the overridden method. This practice, called covariant return types, is used in the previous example: Animal.getPreferredFood returns a Food instance. Horse.getPreferredFood (Horse is a subclass of Animal) returns an instance of Hay (a subclass of Food). For more information, see Overriding and Hiding Methods.
@Override@Override annotation 告诉编译器当前元素是重写(override)自父类的一个元素 。在前面的例子中 , override annotation用来说明Horse类中的getPreferredFood这个方法重写(override)自Animal类中相同的方法 。如果一个方法被标注了@Override,但是其父类中没有这个方法时,编译器将会报错 。但是并不是说我们一定要使用这个annotation,但是它能够很明显的给出实际行为,尤其是在方法返回一个被重写的方法返回类型的子类型的时候 。上面的例子中,Animal.getPreferredFood 返回一个 Food实例 , Horse.getPreferredFood 返回一个Hay实例,这里Horse是Animal的子类,Hay是Food的子类 。
@SuppressWarningsThe @SuppressWarnings annotation tells the compiler to suppress specific warnings that it would otherwise generate. In the previous example, the useDeprecatedMethod calls a deprecated method of Animal. Normally, the compiler generates a warning but, in this case, it is suppressed. Every compiler warning belongs to a category. The Java Language Specification lists two categories: "deprecation" and "unchecked". The "unchecked" warning can occur when interfacing with legacy code written before the advent of generics. To suppress more than one category of warnings, use the following syntax: @SuppressWarnings@SuppressWarnings annotation 告诉编译器禁止别的元素产生的特殊的警告(warnings),在前面的例子里,useDeprecatedMethod调用了Animal的不赞成使用的一个方法 。一般情况下,编译器会给出一个警告(warning),但是在这种情况下,不会产生这个警告,也就是说被suppress 。每个编译器的警告都属于一个类型 。Java Language Specification列出了两种类型:"deprecation" 和 "unchecked" 。"unchecked" warning 发生在使用非generic的旧代码交互的generic collection类时 。为了禁止不止一种的警告时,使用下面的语法:@SuppressWarnings({"unchecked", "deprecation"})
如何使php页面中不再出现NOTICE和DEPRECATED的错误提示<?php
//文件头部设置
error_reporting(E_ALL^E_NOTICE);
?>
//或者在php.ini配置文件中修改:
error_reporting=E_ALL & ~E_NOTICE
php报错: Deprecated: preg_replace(): The /e modifier is deprecated...这个错误是这样的情况,我们来一起分析下:从错误的信息来看,貌似说是用了不推荐的函数,也就是过时的函数,可是事实是这样吗?为了一探究竟,我查看了PHP手册的preg_replace()函数介绍,并没有说这个函数过时了或不推荐了,那么,问题出在哪了呢?继续往下看,结果在手册中看到这样的消息:错误/异常当传入 "\e" 修饰符的时候,会产生一个 E_DEPRECATED 级别的错误 。好像明白点了 , 是因为用了“\e”修饰符,那之前使用为什么没有出错呢?继续往下看,看到版本更新 , 一下恍然大悟,原来如此:版本说明5.5.0/e 修饰符已经被弃用了 。使用 preg_replace_callback() 代替 。参见文档中 PREG_REPLACE_EVAL 关于安全风险的更多信息这下问题很清楚了,5.5.0以后的版本,/e的参数被废弃了,也就是不推荐了,官方建议使用preg_replace_callback()函数代替 。废话有点多了,好,下面进入正题 。好了,问题找到了 , 那就看看如何解决,官方推荐使用preg_replace_callback(),那还客气啥 , 用就是了 。可是,问题又来了,怎么用呢?继续看手册,看preg_replace_callback()的手册,说的很明白 。其实这个函数和preg_replace()唯一的区别就是 , preg_replace()将匹配到的串直接替换,而preg_replace_callback()是将匹配到的串带入到回调函数中做处理后然后替换,就是这么任性,灵活度一下加大了,但是效率肯定不如preg_replace(),所以,如果仅仅是简单替换,还是用preg_replace()的好 , 如果要对匹配到的串进行特殊处理,那就非preg_replace_callback()莫属了,亲!好了,就到这里了,为了升级知道账号,所以废话有点多了 。。。。。望采纳啊 。
struts升级到2.3.14.2版本 报ActionContextCleanUp <<< is deprecated! Please use the new filters警告更改web.xml文件:struts2Filterorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterfilter-class处,改了就好了 。
PHP中如何开启错误提示输出?开启步骤如下:
1. 打开php.ini文件 。
以ubuntu为例 , 这个文件在: /etc/php5/apache2 目录下为例 。
2. 搜索并修改下行,把Off值改成On
display_errors = Off
3. 搜索下行
error_reporting = E_ALL & ~E_NOTICE
或者搜索:
error_reporting = E_ALL & ~E_DEPRECATED
修改为
error_reporting = E_ALL | E_STRICT
4. 修改Apache的 httpd.conf,
以Ubuntu 为例,这个文件在:/etc/apache2/ 目录下 , 这是一个空白文件 。
添加以下两行:
php_flag display_errors on
php_value error_reporting 2039
5. 重启Apache,就OK了 。
重启命令: :sudo /etc/init.d/apache2 restart.
求助Deprecated,关于php的具体代码如下:<?php$ch = curl_init();$timeout = 5;curl_setopt ($ch, CURLOPT_URL, '');curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$file_contents = curl_exec($ch);curl_close($ch);echo $file_contents;?>PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法 。它可以比CGI或者Perl更快速地执行动态网页 。用PHP做出的动态页面与其他的编程语言相比 , PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行 , 执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快 。
新手求助PHP的一个简单问题PHP Deprecated:Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0
原因:你的配置文件ming.ini中配置有问题:提示的意思是说你这个文件中的注释不能用#开头 , 这种注释方式已经过时了··,所以你要检查这个ini文件了,另外,如果我记得的没错的话 , ini格式的文件的注释应该是";"分号开头的 。
PHP Notice:Use of undefined constant myBook - assumed 'myBook' in /var/www/temp.php on line 19
PHP Stack trace:
PHP1. {main}() /var/www/temp.php:0
这个是应该你在调用的时候变量符号丢掉了,PHP中的变量的调用需要用变量符号$:
而且,在PHP中类对象访问方法是用->的方式访问 , 所以做如下更改:
$myBook = new book ;
myBook.set_price(80) ;// -> 应该是$myBook->set_price(80) ;
myBook.set_title("我的Book") ; // -> 应该是$myBook->set_title("我的Book") ;
myBook.get_price ( ) ; //->应该是 $myBook->get_price ( ) ;
myBook.get_title ( ) ; // ->应该是 $myBook->get_title();
关于PHP的问题在php.ini 里把错误级别改成 all_error^notice
大概就是这样的
意思为输出所有错误,但不显示通知级别的 。
Notice代表通知级别的问题 但是不是错误程序,屏蔽notice通知程序可以正常运行 。
我一般写的时候都会这样
关于PHP版本比较,和错误报告 。。error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
报告除了通知错误(E_NOTICE )还有过时函数错误(E_DEPRECATED)之外的所有错误
error_reporting(E_ALL & ~E_NOTICE);
报告除了通知错误(E_NOTICE )之外的所有错误
代码的意思就是说 如果php版本是5.3以上就关闭函数过时错误 , 5.3以下就不关闭 。
为什么要这么处理呢?
因为在版本升级到5.3之后之前版本的一些函数就不推荐使用,使用的话如果不关闭的错误提示的话就会提示函数过时错误 。。。
- 兄弟战争游戏
- gigabitethernet
- 打印机怎么连接电脑
- graphite
- the是什么意思
- only是什么意思
- thewolf
- thermalright
- brother打印机驱动
- 7360驱动
