gpt4 book ai didi

java - 将 getClass() 作为参数传递给不同的类

转载 作者:行者123 更新时间:2023-12-01 18:05:02 26 4
gpt4 key购买 nike

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

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

3) PremiumMemberMember 的扩展类,并将所有参数传递给 Member

4) 目前,创建新的 PremiumMember 具有类 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 类?

谢谢!

最佳答案

您正在调用 getClass()java.lang.reflect.Type上- 所以这会给你 Class.class ...实际上,您已经调用了 this.getClass().getClass() ,而您不想这样做。

我怀疑您想更改您的 validateId接受 Class<?> 的方法而不是Type ,然后只需使用 classType.getGenericSuperclass()等等(我还没有检查您如何使用该类的逻辑 - 让我们专注于从正确的类开始。)

关于java - 将 getClass() 作为参数传递给不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37178687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com