java java反射调用静态方法问题

静态方法和实例方法在内存里存放的问题_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:261,639贴子:
静态方法和实例方法在内存里存放的问题收藏
都是存放在哪里的?看到说实例方法也是只有一份的,那么写实例方法的意义是什么?都改成静态方法不就行了?
可以是可以,但问题来了,静态方法里面不能用实例变量,那么只能通过参数来传变量,那么问题又来了,像getXXX 这种获取对象某个属性值的方法,就不好实现了
楼主理解还是不太清楚
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或java继承静态方法复写 - 猫头哥(朴海林)_QQ: - ITeye技术网站
博客分类:
最近和人交流,遇到了这样一个问题,就是继承当中,静态方法复写的情况。
如果在子类中,复写方法没有添加static关键字,则IDE会提示:This instance method cannot override the static method from T1
如果在子类中,复写方法与父类一致,此时若添加@Override注解,则IDE报错提示:The method print() of type T2 must override or implement a supertype method
但是一般人也没这么使用的,方法复写。只是记录下来,以便了解。
package com.chinaso.
public class TestT {
public static void main(String[] args) {
T1 t = new T2();
t.print();
T2 t2 = new T2();
t2.print();
class T1 {
public static void print() {
System.out.println("super");
class T2 extends T1 {
public static void print() {
System.out.println("this");
输出
super
this
mike.liu 写道静态方法,也称为类方法。不建议用对象去调用,而应该用类去调用。直接T1.print() ?是的。静态方法里面不能访问对象的成员的,只能访问静态成员。不用对象去调用静态方法,可以避免误解,以为这个方法会访问对象。反过来,对象方法是可以自由访问静态方法的。
静态方法,也称为类方法。不建议用对象去调用,而应该用类去调用。直接T1.print() ?
浏览: 616159 次
来自: 北京
demoxshiroki 写道楼主这种写法CAS操作的redi ...
memcachedClient.gets(&key& ...
楼主这种写法CAS操作的redis化,实现了非公平锁, 可否想 ...
可否解释下 主动上下文切换,和被动上下文 切换,以及中间到一定 ...
这个跟CPU是否超线程有关系相关文章推荐:
java 静态类
如何把java类加载到数据库中,然后在pl/sql中去调用java类的静态方法?
急急急!!!
阅读(1559) 回复(6)
其他文章推荐
ITPUB官方微博:
有关于在java 类的静态初始化块中创建一个自身实例的问题。
static {...} //1
static {...} //2
static {new a()} //3
static {...} //4
这会造成什么样的静态初始化块执行顺序那?4是否应该在3之前执行那?
这个问题在JVM的规范中有说明,对应这里的解释就是
线程在3部分要初始化a时会发现当前线程正在初始化这个类,所以他认为这是一次递归的请求,他会放弃第二次初始化请求,然后执行构造器创建a,再继续执行当前...
阅读(1381) 回复(1)
oracle 10g数据库,谁知道在java source中如何去调用外部的java 类中的静态方法?
急急急!谢谢!
阅读(1248) 回复(1)
在oracle 10g中创建了一个目录:mailclassdir 路径是e:\org\xinkon\util
java类名:Mail.class
然后在pl/sql中写了如下程序,可是执行时报错,说是Mail.class找不到,为什么呢?
/*------------------------------- sendmail ----------------------------------*/
DESCRIPTION
This fucntion will send match reult to user's mail box.
procedure SENDMAIL(target in string,
阅读(1162) 回复(0)
ORACLE调用java,java里面有使用到第三方的JAR包。那么ORACLE要怎样导入这个JAR包?
我使用的是ORACLE 9i2。load object(s),好像是ORACLE 8使用的。
问问大家怎么解决……谢谢!
阅读(3310) 回复(2)
我写了一个类加载器,但是加载(loadClass)类后,报错是无法解析加载的类.原代码如下:
import java.io.*;
public class myClassLoader extends ClassLoader{
private byte[] getBytes( String fileName )throws IOException{
File file = new File( fileName );
long fileLen = file.length();
byte fileArray[] = new byte[(int)fileLen];
FileInputStream fin = new FileInputStream(file);
阅读(829) 回复(1)
public class Test {
public void test(Object obj) {
System.out.println("Object");
public void test(String str) {
System.out.println("String");
public static void main(String[] args) {
阅读(660) 回复(0)
 java类与对象学习总结:
  类与对象是java中最基本的概念,这就好比是盖一座摩天大楼,我们学会这些基本概念并且理解透彻,才能打下坚实的基础,伴随着努力和创意我们能将java发挥到极致,能将java应用这一座“摩天大楼”盖得与众不同。
  首先我们明确一个概念,什么是类?什么是对象?
  用通俗易懂的话说,类是
阅读(120) 回复(0)
  java处理ip的工具类,包括把long类型的Ip转为一般Ip类型、把xx.xx.xx.xx类型的转为long类型、根据掩码位获取掩码、根据
ip/掩码位 计算IP段的起始IP、根据 ip/掩码位 计算IP段的终止IP等方法,可以直接使用!
  package com.hh.
  import java.util.HashM
  import java.util.M
  import
阅读(120) 回复(0)
阅读(120) 回复(0)
欢迎来到“Under The Hood”第二期。上期我们讨论了抽象计算机JVM。如果你对JVM还很陌生,你可以去看看上期的文章。本期,我们稍稍窥探一下java类文件的基本结构。
为旅行而生
java类文件(.class文件)是一个为已编译java程序仔细定义的格式。java源代码被编译成能够被任何JVM加载和执行的类文件。在被JVM加载之前,类文件可能是
阅读(2490) 回复(0)
盛拓传媒:
北京皓辰网域网络信息技术有限公司. 版权所有
北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证:编号(京)字第1149号
ITPUB推荐文章解答你所有技术难题如果多个线程同时访问同一个静态方法,后一个线程传递的参数值会覆盖前一个线程传递的参数值吗?代码示例如下:
被访问的静态资源:
public class C {
public static void test(String[] value) throws InterruptedException{
&&& Thread.sleep(5000);
&&& System.out.println(Thread.currentThread().getId());
&&& for(String v : value){
&&&&&&& System.out.println(v);
&&& }
}
}
public class A {
public static void main(String[] args) throws InterruptedException {
&&& C.test(new String[]{"A","B", "C"});
}
}
public class B {
public static void main(String[] args) throws InterruptedException {
&&& C.test(new String[]{"D","E", "F"});
}
}
在线程1访问静态方法test并传递参数后,假设在执行中或执行之前,下一个线程2也访问了test方法并传递了新的参数,此时在线程1遍历参数时,会遍历到线程2传递的参数吗?
采纳的答案
局部变量是线程安全的! 都有自己运行的线程堆栈!
你们要告诉别人为什么方法时,使用入参是安全的?
局部变量线程安全,实例属性线程不安全,静态类的静态属性就不安全,但是静态方法里的参数是安全的
不会覆盖。是线程安全的。
多线程情况下出问题只有一种可能:存在成员变量,且多个线程同时对成员变量进行读写。
你这种不存在成员变量。你那参数只是局部的。所以没有问题。
如果存在成员变量但是不存在并发读写也没问题(比如,只初始化一次的成员变量,其它结程只读取不写入)
不会的,局部变量是线程安全的
已解决问题
未解决问题等 级:论坛游民
专家分:13
哦?怎么没人回答呢???沙发
等 级:贵宾
威 望:11
帖 子:209
专家分:474
&&得分:10&
本人出售软件专业毕业设计(包括论文,代码)题目众多,价格从优联系方式:QQ
(寻找高校代理)
来 自:江苏
等 级:黑侠
帖 子:308
专家分:518
&&得分:10&
等 级:论坛游民
帖 子:43
专家分:85
晕了,静态方法也可以被覆盖了,
唉,只能隐藏,不能覆盖
等 级:版主
威 望:54
帖 子:2508
专家分:6424
程序代码:class Super{&&&
&&&static String greeting(){&&&
&&&&&&return &Good night&;&&&
&&String name(){&&&
&&&&&return &Richard&;&&&
class Sub extends Super{&&&
&&&static String greeting(){&&&
&&&&&return &Hello&;&&&
&&String name(){&&&
&&&&&return &Dick&;&&&
class Test{&&&
&&public static void main(String[] args){&&&
&&& Super s = new Sub();&&&
&&& System.out.println(s.greeting()+&,&+s.name());&&&
运行结果://~~Good night,Dick
这个例子说明“实例方法被覆盖,静态方法被隐藏”
[ 本帖最后由 lampeter123 于
08:42 编辑 ]
你的优秀和我的人生无关!!!!
    我要过的,是属于我自己的生活~~~
等 级:新手上路
我刚学JAVA
对于 Super s = new Sub();&&& 还没学到 。
在栈里面的 Super 指向&&& 堆 的 Sub?
等 级:贵宾
威 望:23
帖 子:1223
专家分:437
不可以被覆盖!也没有多态的概念
[url=/][/url]
等 级:新手上路
不能,上面的例子很贴切!
等 级:论坛游民
专家分:13
谢谢了,参考了一下三个版本的官方说明,还是不明确,哈哈,存在争议
版权所有,并保留所有权利。
Powered by , Processed in 0.025913 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved}

我要回帖

更多关于 java非静态方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信