【发布时间】:2015-03-29 19:39:51
【问题描述】:
我正在尝试检查一个对象是否在同一个包中具有超类。
我做了下面的例子
Vehicle.java
package myPackage;
public class Vehicle {
public Vehicle(){}
}
Car.java
package myPackage;
public class Car extends Vehicle{
public Car(){
super();
}
}
Main.java
1 package myPackage;
2
3 public class Main {
4
5 public static void main(String[] args){
6 Vehicle v = new Car();
7 hasSuperInSamePackage(v);
8 }
9
10 public static boolean hasSuperInSamePackage(Object o) {
11 boolean b = false;
12 if ((o.getClass().getSuperclass()) != null) {
13
14 Class c = o.getClass().getSuperclass();
15 Package objectPackage = o.getClass().getPackage();
16 Package superPackage = c.getClass().getPackage();
17 System.out.println("--begin--");
18 System.out.println("Object: " + o.toString());
19 System.out.println("objectPackageName: " + objectPackage.getName());
20 System.out.println("Super: " + c.toString());
21 System.out.println("superPackageName: " + superPackage.getName());
22 System.out.println("---end---");
23
24 b = (superPackage.getName().equals(objectPackage.getName()));
25 }
26 return b;
27 }
28 }
main的输出如下
--begin--
Object: myPackage.Car@7852e922
objectPackageName: myPackage
Super: myPackage.Vehicle
superPackageName: java.lang
---end---
如您所见,c.getClass()[Main.16] 采用了 Class 类的超类,即 java.lang,这很明显。我想将“myPackage”作为超类。我该怎么做?
【问题讨论】:
标签: java inheritance package superclass