如果我运行时创建了一个类,不过创建的时候就已经把它向上转型为Object了。
不过后来我想把它向下转为它本来的类型,应该怎样做?最好可以说说使用Class对象的方法。
当然其他的方法也可以接受。不要问我为什么这样做。我只是想知道怎样可以运行时转型为本来的类型。谢谢!
不过后来我想把它向下转为它本来的类型,应该怎样做?最好可以说说使用Class对象的方法。
当然其他的方法也可以接受。不要问我为什么这样做。我只是想知道怎样可以运行时转型为本来的类型。谢谢!
解决方案 »
- java 解析xml过程中递归问题
- myeclipse导入项目各种报错
- 为什么在新建对象后面跟了一个方法。。。
- 取得本机IP(getLocalHost)的问题
- VB程序员转JAVA需要注意些什么或重点是什么?请高手指点。
- 如何将输入窗口的内容以文本形式保存到本地
- Set set = new HashSet(); set 里面的元素的顺序是怎样的?
- 谁有ANT 的 GUI工具
- 怎么觉得“定义一个类封装一个方法来实现……”的这种说法有点怪怪的?
- JTable里怎样在modal变化的时候,用代码让UI刷新?
- 如何判断运行的平台是linux还是Windows呢?
- Installanywhere 5.5 的注册码
void p(){
System.out.print("this is b");
}
public static void main(String[] args){
B b=new B();
Object o=(Object)b;
b=(B)o;
b.p();
}
}
Object obj = Class.forName("com.wssgwps.Test").newInstance();
Test t = (Test)obj;
t.doYourThing();
System.out.println(d.getClass().getName());//不知道是不是这个意思C:\ww>java test
java.util.Date
所以你只能在运行时把一个类向上转换(up cast)成他的父类/父接口,调用父类的方法.这就是为什么要设计成继承体系的原因.
//do sth
}
public class test3 { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根 ArrayList l=new ArrayList();
String s="this is a String";
l.add(s);
Class c=l.get(0).getClass();
String s1="this ia another String";
Double d=new Double(10);
if(s1.getClass() == c) {
l.add(s1);
}
if(d.getClass() == c) {
l.add(s1);
}
System.out.println(l);
}}是不是这个意思啊?
谢谢。
这是一个前提,我想知道的是然后取出后然后转型。给一个例如:import java.lang.*;
import java.util.*;public class staticCollection{
private List li=new ArrayList();
private boolean hasMenber =false;//是否已有第一对象的标志
public void add(Object o){
if(hasMenber){
if((li.get(0).getClass().isInstance(o)))
li.add(o);
else System.out.println("you can't add this object!!");
}
else {li.add(o);
hasMenber=true;
}
}
public static void main(String[] args){
staticCollection sc=new staticCollection();
sc.add("String");
sc.add("String2");
//sc.add(new Integer(1));//运行错误,
//因为第一次放入对象已经决定了类型 //问题来了,如果我现在想使用String的特有方法charAt()
//当然要先把它转型才可以用啊,想这样(String)加前缀直接转型
//但是需要考虑的是,你不知道放入的是String类呢?怎么办?
//如果到运行时才动态放入对象到StaticCollection中,那么我们
//有可以能不会知道他放入是什么类型的对象的,确实有这种可能。
//总不能通过instanceof来判断吧,可是有成千上万的类啊!!
//那么我现在想向下转型回原来的对象使用特有的方法,该怎么办?
}
}希望大家继续支持~~
應該無法add其他類的對象,我認為
因為已經進行判斷了
if((li.get(0).getClass().isInstance(o)))//判斷第一個對象的類是否和新增加的類一樣
我的理解,對嗎?
如果錯了,請指正
方法A保存对象的类别 比如说用String
然后在object中调用a()来获得对象类别 然后转换以上纯属猜想
toString()返还对象类别
然后object调用toString()来获得对象类别 转换 我试试看
确实如你所说,我没有清楚的了解OO概念。因为我是一个程序的初学者。OO以后才找个时候专门学习。真的只能强制转换而不能动态吗?
为什么呢?请大家发表一下意见,谢谢!