怎么在实现类里面获取接口的所有的实现对象

时间:2022-11-26 13:39:51
接口I,实现类A,实现类B,想在A的对象a里面获取到B的对象b,不能用常规方法,我只能写A的代码,B的代码和接口我控制不了,多谢。

13 个解决方案

#1


直接new不行么?

#2


你这个常规方法指的是什么?

#3


……………………反射?

#4


直接new的不算,反射也不知道咋反射,就是获取内存中已经new过了的对象b

#5


引用 4 楼 csdou 的回复:
直接new的不算,反射也不知道咋反射,就是获取内存中已经new过了的对象b


听你的意思好像是要获取已经创建过的对象b,是不是意味着对象b只有一个?如果是的话那就可以参照数据库连接connection那种写法单例模式得到这个对象了

#6


你的常规方法指的是将B作为A的属性封装,然后进行Get吗

#7


太难了,B也不是单例,简单点说,就是想从内存中获取一个对象,如果是多例,就全部获取出来。

#8


引用 6 楼 yongbuyanqi88888 的回复:
你的常规方法指的是将B作为A的属性封装,然后进行Get吗

是的

#9


引用 7 楼 csdou 的回复:
太难了,B也不是单例,简单点说,就是想从内存中获取一个对象,如果是多例,就全部获取出来。

你是想在获取A类对象的同时获取B类的所有实例,不知我的理解是否正确

#10


我有一个思路,就是把给个可以找到的类的实例,
然后用instanceof I试试,如果是true那就是这个接口的实现类。

#11


其实你在B类的构造函数里,写一个保存该对象到某个静态的List或者map里即可,

public class B{
      public static List<B> b=new ArrayList<B>();
      public B(){
             b.add(this);
      }
}

如果这都不能做的话,那我真帮不了你了

#12


引用 11 楼 maradona1984 的回复:
其实你在B类的构造函数里,写一个保存该对象到某个静态的List或者map里即可,

public class B{
      public static List<B> b=new ArrayList<B>();
      public B(){
             b.add(this);
      }
}

如果这都不能做的话,那我真帮不了你了


多谢,B的代码我真的控制不了。

#13


引用 9 楼 yongbuyanqi88888 的回复:
Quote: 引用 7 楼 csdou 的回复:

太难了,B也不是单例,简单点说,就是想从内存中获取一个对象,如果是多例,就全部获取出来。

你是想在获取A类对象的同时获取B类的所有实例,不知我的理解是否正确


差不多吧,我就想在A的方法里面获取到B,操作B的行为,说的好听点,就像两个心有灵犀的兄弟,兄弟A能获取到兄弟B在想什么,说不好听的,就是两个兄弟,兄弟A想控制兄弟B的行为符合兄弟A的利益。

#1


直接new不行么?

#2


你这个常规方法指的是什么?

#3


……………………反射?

#4


直接new的不算,反射也不知道咋反射,就是获取内存中已经new过了的对象b

#5


引用 4 楼 csdou 的回复:
直接new的不算,反射也不知道咋反射,就是获取内存中已经new过了的对象b


听你的意思好像是要获取已经创建过的对象b,是不是意味着对象b只有一个?如果是的话那就可以参照数据库连接connection那种写法单例模式得到这个对象了

#6


你的常规方法指的是将B作为A的属性封装,然后进行Get吗

#7


太难了,B也不是单例,简单点说,就是想从内存中获取一个对象,如果是多例,就全部获取出来。

#8


引用 6 楼 yongbuyanqi88888 的回复:
你的常规方法指的是将B作为A的属性封装,然后进行Get吗

是的

#9


引用 7 楼 csdou 的回复:
太难了,B也不是单例,简单点说,就是想从内存中获取一个对象,如果是多例,就全部获取出来。

你是想在获取A类对象的同时获取B类的所有实例,不知我的理解是否正确

#10


我有一个思路,就是把给个可以找到的类的实例,
然后用instanceof I试试,如果是true那就是这个接口的实现类。

#11


其实你在B类的构造函数里,写一个保存该对象到某个静态的List或者map里即可,

public class B{
      public static List<B> b=new ArrayList<B>();
      public B(){
             b.add(this);
      }
}

如果这都不能做的话,那我真帮不了你了

#12


引用 11 楼 maradona1984 的回复:
其实你在B类的构造函数里,写一个保存该对象到某个静态的List或者map里即可,

public class B{
      public static List<B> b=new ArrayList<B>();
      public B(){
             b.add(this);
      }
}

如果这都不能做的话,那我真帮不了你了


多谢,B的代码我真的控制不了。

#13


引用 9 楼 yongbuyanqi88888 的回复:
Quote: 引用 7 楼 csdou 的回复:

太难了,B也不是单例,简单点说,就是想从内存中获取一个对象,如果是多例,就全部获取出来。

你是想在获取A类对象的同时获取B类的所有实例,不知我的理解是否正确


差不多吧,我就想在A的方法里面获取到B,操作B的行为,说的好听点,就像两个心有灵犀的兄弟,兄弟A能获取到兄弟B在想什么,说不好听的,就是两个兄弟,兄弟A想控制兄弟B的行为符合兄弟A的利益。