Java 检查类是否有成员变量?
我写了一个小程序,里面有几个定义的类。我正在为这些课程编写测试。我为其中一个类编写的构造函数有一个参数,它是另一个类的实例。所以,它看起来像这样:Java 检查类是否有成员变量?,java,class,class-members,Java,Class,Class Members,我写了一个小程序,里面有几个定义的类。我正在为这些课程编写测试。我为其中一个类编写的构造函数有一个参数,它是另一个类的实例。所以,它看起来像这样: interface type1 {} interface type2 {} class class1 implements type1{ String something; int somethingElse; //... } class class2 implements type1{ String someth
interface type1 {}
interface type2 {}
class class1 implements type1{
String something;
int somethingElse;
//...
}
class class2 implements type1{
String something2;
int somethingElse2;
//...
}
class class3 implements type2{
Object obj1;
Object obj2;
String blabla;
//...
class3(Object inObj1, Object inObj2, String x){
this.obj1 = inObj1;
this.obj2 = inObj2;
this.blabla = x;
}
}
class ExamplesType1{
class1 type1Something1 = new class1(...);
class2 type1Something2 = new class2(...);
}
class ExamplesType2{
class3 type2Something = new class3(type1Something1, type1Something2, ...);
}
如上所述,我正在创建测试。有两个测试类(每个接口一个)。我希望它们看起来像这样:
interface type1 {}
interface type2 {}
class class1 implements type1{
String something;
int somethingElse;
//...
}
class class2 implements type1{
String something2;
int somethingElse2;
//...
}
class class3 implements type2{
Object obj1;
Object obj2;
String blabla;
//...
class3(Object inObj1, Object inObj2, String x){
this.obj1 = inObj1;
this.obj2 = inObj2;
this.blabla = x;
}
}
class ExamplesType1{
class1 type1Something1 = new class1(...);
class2 type1Something2 = new class2(...);
}
class ExamplesType2{
class3 type2Something = new class3(type1Something1, type1Something2, ...);
}
我的问题是,如何从ExamplesType2访问ExamplesType1成员的对象,以便。。。运行我的测试?假设我无法在同一个类中测试两个接口,并且无法再次定义ExamplesType1和ExamplesType2中定义的对象
我知道我可以创建一个返回函数(例如getType1Something()),但它们是公共的,所以我不应该在不定义函数的情况下访问它们吗
抱歉,如果这是一个新问题。。。今天刚开始使用Java
谢谢你的帮助!如果需要任何澄清,请告诉我 假设
ClassA
有两个实例化的类,ClassB
和ClassC
,由
ClassB classB = new ClassB();
ClassC classC = new ClassC();
ClassB
和ClassC
public
变量可以在ClassA
中引用,例如:ClassB.variableName
这可以将公共的任何对象从基元类型引用到对象
如果未实例化类,则public
变量还必须使用要引用的static
关键字。此静态
引用允许您绕过父类和实例化的封装
换句话说,ClassB
可以引用父类ClassA
来检索自身的公共静态
实例,但如果它不是静态
变量,则必须依赖实例化、静态getter方法或带有getter方法的实例化来访问这些对象
希望这有帮助:)假设你有两门课
class ClassA {
String flag;
...
}
class ClassB {
String flag;
...
}
您有几个选项可以从这些类访问字段成员
通常推荐的方法是为字段创建setter和getter。这样,任何持有这些类实例引用的块都可以访问和修改这些字段
您还可以选择将这些字段公开,这也将允许包含对这些类的引用的任何代码块访问公共字段
如果您希望某些类可以访问这些字段,但不是所有人(不是公共的),可以将它们设置为包保护。这将允许同一包中的任何其他类访问这些字段,但不允许任何其他类访问这些字段。要保护字段(或方法)包,只需不为相关字段指定访问修饰符(public或private)。你可以读更多
最后,对于测试来说非常方便的是使用反射来访问私有成员。反射的性能不是很好,有点粗俗,但在某些情况下它可能非常方便。我主要使用反射来模拟单元测试中的对象,但也看到它以非常有趣的方式使用
Field=MyClass.getDeclaredField(“fieldName”);
字段。setAccessible(true);
字符串标志=field.get(myInstance)
写这篇文章主要是出于记忆,但我相信这会让你走下去
希望这有帮助!祝你好运 如果遵循类和接口名称的命名约定会更好。根据Oracle的说法:“类名应该是名词,大小写混合,每个内部单词的第一个字母大写。”在进入公共字段之前,必须创建ExamplesType1
的实例。不过,您确实应该使用getter方法。您的代码中没有公共成员。@4尽管我同意您的看法,但我应该这样做。但是我不能。。。这是一项学校作业,要求有些迟钝。创建一个实例可能会起作用。。。看不出他们(助教)为什么会扣分。谢谢确定其他类是否可以使用特定字段或调用特定方法。我很高兴这有帮助:)