Java两个不同的类之间如何连接,不是继承,求大神指教
答案:2 悬赏:10
解决时间 2021-02-07 10:40
- 提问者网友:紫柔同归
- 2021-02-06 19:46
Java两个不同的类之间如何连接,不是继承,求大神指教
最佳答案
- 二级知识专家网友:如果这是命
- 2021-02-06 21:18
Class中有个方法 public native boolean isAssignableFrom(Class> cls)用来判断子类是否继承于父类的或者父接口的。
你会这样子写:
Class clazz = ....;
clazz.isAssignableFrom(子类名称);返回true说明是挂号里的类的父类或父接口。
clazz.isAssignableFrom(子类名称)里的子类名称跟版本有关,好像是1.5以上的JDK这里的子类名称都是使用的泛型编程。即传的传数是
class 类型的,你用的时候自己斟酌下版本问题。
而常用的instanceof(class ..)是指该实例是否属于挂号中的类的父类的一个实例。
如上面的例子:
class A{
}
public class B extends A{
public static void main(String[] args){
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz)){
System.out.println("A是B的父类");
}else{
System.out.println("A不是B的父类");
}
}
}
接口的话也一样的:如下
public interface A {
}
public class B implements A{
public static void main(String[] args) {
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz)){
System.out.println("A是B的父类");
}else{
System.out.println("A不是B的父类");
}
}
}
你测试时只需要把extends A和implements A去掉那就是A不是B的父类或者父接口的情况。 这就是java反射机制的精髓啊
你会这样子写:
Class clazz = ....;
clazz.isAssignableFrom(子类名称);返回true说明是挂号里的类的父类或父接口。
clazz.isAssignableFrom(子类名称)里的子类名称跟版本有关,好像是1.5以上的JDK这里的子类名称都是使用的泛型编程。即传的传数是
class
而常用的instanceof(class ..)是指该实例是否属于挂号中的类的父类的一个实例。
如上面的例子:
class A{
}
public class B extends A{
public static void main(String[] args){
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz)){
System.out.println("A是B的父类");
}else{
System.out.println("A不是B的父类");
}
}
}
接口的话也一样的:如下
public interface A {
}
public class B implements A{
public static void main(String[] args) {
Class clazz = B.class;
Class class1 = A.class;
System.out.println(class1.isAssignableFrom(clazz));
if(class1.isAssignableFrom(clazz)){
System.out.println("A是B的父类");
}else{
System.out.println("A不是B的父类");
}
}
}
你测试时只需要把extends A和implements A去掉那就是A不是B的父类或者父接口的情况。 这就是java反射机制的精髓啊
全部回答
- 1楼网友:青灯壁纸妹
- 2021-02-06 22:33
public class pass {
static int j = 20;
public static void main(string argv[]) {
int i = 10;
pass p = new pass();
p.amethod(i);
system.out.println(i);
system.out.println(j);
}
public void amethod(int x) {
x = x * 2;//1.x是一个局部变量,只在这个方法内有用
j = j * 2;//2.j是一个全局变量,这里可以直接改变到j
system.out.println("x in amethod = "+x);//这里可以证明1.
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯