繁体   English   中英

将getClass()作为参数传递给另一个类

[英]Passing getClass() as a parameter to a different class

1)我有一个名为Utilites的类,该类执行一些字符串检查以确保“ ID”符合标准。

2)我想将调用类的详细信息传递给Utilities类,以确定“ ID”对于该类型是否正确(在MembersHolding之间)。

3) PremiumMemberMember的扩展类,并将所有参数传递给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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM