[英]Passing getClass() as a parameter to a different class
1)我有一个名为Utilites
的类,该类执行一些字符串检查以确保“ ID”符合标准。
2)我想将调用类的详细信息传递给Utilities
类,以确定“ ID”对于该类型是否正确(在Members
和Holding
之间)。
3) PremiumMember
是Member
的扩展类,并将所有参数传递给Member
4)目前,创建一个新的PremiumMember
具有Class java.lang.Class
而不是预期的library.Member
包含测试代码的主要方法的类
package library;
import lib.Utilities;
public class LibraryManagementSystem
{
static Member[] members = new Member[15];
public static void main(String[] args)
{
members[0] = new PremiumMember("p000001", "Mr Bill Wrong"); // Prints **Java.lang.Class**
System.out.println(members[0].getClass()); // Prints **library.Member**
}
包含构造函数的类
import lib.Utilities;
public abstract class Member {
public Member(String memberID, String fullName) // Constructor for each member
{
memberNumber = Utilities.validateId(memberID, this.getClass()); // Makes sure that the ID conforms to all requirements
this.fullName = fullName;
}
实用程序类,用于检查ID号码的有效性
import library.Holding;
import library.Member;
public class Utilities {
public static String validateId(String checkId, Type classType)
{
if (classType.getClass().getGenericSuperclass() == Holding.class)
{
// Deal with code one way
return "Is of Holding Class"
}
else if (classType.getClass().getGenericSuperclass() == Member.class)
{
// Deal with code another way
return "Is of Member Class"
}
else
{
System.out.println(classType.getClass() + " Not of Member/Holding class");
return "INVALID";
}
我不明白为什么要实例化并假定通过自定义构造函数返回Java.lang.Class
类?
谢谢!
您要在java.lang.reflect.Type
上调用getClass()
-这样就可以给您Class.class
...实际上,您已经调用了Class.class
this.getClass().getClass()
,而您没有不想那样做。
我怀疑您想将validateId
方法更改为接受Class<?>
而不是Type
,然后仅使用classType.getGenericSuperclass()
等。(我尚未检查您如何使用该类的逻辑-让我们专注于获得合适的课程开始。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.