带有接口的匿名类
在处理匿名内部类时,我对接口的概念感到困惑.据我所知,您无法实例化Java中的接口,因此以下语句将具有编译错误 ActionListener action = new ActionListener(); // compile error 当它处理匿名类时会发生什么?为什么允许使用new?例如: JButton button = new JButton("A"); button.addActionListener(new ActionListener(){ //this is fine @Override public void actionPerformed(ActionEvent e){ } }; 编译器是否只是在场景后面完成ActionListener?它如何工作? 解决方案 它允许您创建一个实现ActionListener的新的匿名类,因为
0 2024-02-26
编程技术问答社区
Scala闭包与Java内类相比 -> final VS var
我首先问了有关final在Java中使用匿名内部类的使用的问题: 为什么我们要使用匿名内类的最终关键字? 我实际上正在读马丁·奥德斯基的斯卡拉书. Scala似乎简化了许多Java代码,但是对于Scala闭合,我可能会注意到有很大的差异. 在Java中,我们用一个匿名的内部类"模拟"闭合,捕获最终变量(将复制以生存在堆上而不是堆栈上),似乎在Scala中,我们可以创建一个可以捕获一个的闭合val,也是一个var,因此在"封闭调用"中对其进行了更新! 因此,就像我们可以使用无final关键字的Java Anonymous InnerClass! 我还没有读完这本书,但是现在我还没有找到有关此语言设计选择的足够信息. 有人可以告诉我为什么马丁·奥德斯基(Martin Odersky)真正照顾了功能的副作用,选择闭合以捕获val和var,而不仅仅是val? Java和Scala实现的好处和缺点是什么? 谢谢 相关问题: ,带有Scala封闭,捕获的变量
0 2024-02-26
编程技术问答社区
静态内部类需要导入注释
所以我正在进行一些Junit测试,并想编写具有相似功能但足够小的类似类的类别,可以在单个类中写.无论设计决定如何,我都陷入了编译器错误,我不确定我所看到的规则是什么. 您可以想象它看起来像 package foo; @RunWith(Suite.class) @SuiteClasses({ TestClassOne.class, TestClassTwo.class }) public class TestSuite{ @RunWith(SpringJUnit4ClassRunner.class) public static class TestClassOne{ } @RunWith(SpringJUnit4ClassRunner.class) public static class TestClassTwo{ } } 现在,当编译器踢它时,它将说 testclassone无法解析为类型.有一种简单的方法可以解决这个问题.例
2 2024-02-26
编程技术问答社区
在xml文件中实例化一个内部类(Preference)。
当您想在某些layout.xml文件中访问自定义视图时,您有两个选择: 该视图在自己的类中.那你做 视图是一个内部类: 现在,我想在A 中做同样的事情.第一种方法效果很好,但是我想将所有自定义Preference类放在我的偏好性中.我尝试了(也有'.'而不是'$')以及,但两者都失败了. 有人有主意吗? 解决方案 处理Views充气时,LayoutInflater寻找"视图"
0 2024-02-20
编程技术问答社区
在android中扩展ArrayAdapter
我需要从类ArrayAdapter覆盖getFilter()方法,然后我从在github中 //package name import java.util.ArrayList; import java.util.Arrays; import java.util.List; import android.content.Context; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.Filter; import android.widget.Filterable; public class CustomAdapter extends ArrayAdapter implements Filterable{ private ArrayList mOriginalValues; private List mObjects;
0 2024-02-13
编程技术问答社区
作为内层类的Android活动
我试图将Android Activity声明为内部类.此Activity只能由包含类产生,并且需要访问其某些私人方法(我真的不想公开的方法.).但是,当尝试生成它时,我得到了: java.lang.InstantiationException: can't instantiate class com.foo.bar.baz$MyActivity; no empty constructor 在我的清单中正确声明了活动.这是在Android中不可能的吗? 编辑:某些代码 ... public class MyActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... // Do stuff that uses
0 2024-02-12
编程技术问答社区
在android中嵌套的内部活动类
正在宣布可能在其他活动类中扩展活动的类?如果是这样,我该如何在清单中注册该课程?另外,这是可以合理地完成的事情还是一个坏主意? 我在想 之类的东西 class ListClass extends ListActivity{ ... ArrayList items; class ItemClass extends Activity{ ... Item item; @Override onCreate(){ Integer pos = getIntent().getExtras().getInt("pos"); item = items.get(pos); } } @Override onItemClick(int position){ startActivity(new Inte
0 2024-02-12
编程技术问答社区
具有全局变量的内部类
我想检查用户是否喜欢帖子,因此我编写了此功能,并且需要返回boolean值.任何技巧或提示都将不胜感激. 非常感谢,大家. public boolean ImLike (String Url ) { // Check If user Like The Post Before requestQueue = Volley.newRequestQueue(context); requestQueue.start(); final boolean[] flag = new boolean[1]; StringRequest request = new StringRequest(Request.Method.GET, Url, new Response.Listener() { @Override public void onResponse(String response) {
0 2024-02-09
编程技术问答社区
finish()在OnClick事件中是如何工作的?
我有一个Activity带有一个按钮,可以退出Activity. 通过layout.xml我必须将OnClick事件设置为cmd_exit,并呼叫'this.finish()'工作正常 public void cmd_exit(View editLayout){ this.finish(); } ,但是当我添加OnClickListener时 cmd_exit = (Button) this.findViewById(R.id.cmd_ExitApp); cmd_exit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); this.finish()给出错误.它必须仅是finish(). 我了解finish()生活在Activity课程中,所以我的问题是它在第二个片段中如何
8 2024-02-05
编程技术问答社区
SimpleXML构造函数异常-不能创建内部类
我才刚刚开始使用SumpleXML尝试Android开发,并认为它进展顺利,直到我碰到障碍.下面的代码产生 的例外 w/system.err(665):org.simpleframework.xml.core.corthrentorexception:无法构造内部类 我已经查看了有关内部课程的问题,并认为我理解您为什么会使用它们(不是我的一定是故意的)感谢任何帮助. 源代码: public class InCaseOfEmergencyMedAlertAllergiesActivity extends Activity { public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); Serializer serializer = new Persister(); InputStream xmlstream = this.get
2 2024-02-03
编程技术问答社区
事件监听器的内存泄漏
我已经浏览了文章 developers.blogspot.com/2009/01/avoiding-memory-leaks.html .在本文中,建议使用具有虚弱的静态内部类.许多内部类用于事件听众.那些内部类也会导致内存泄漏吗?那些内部类应该是静态的吗? 解决方案 那些内部类也可能导致内存泄漏? 可能.这取决于这些听众的注册. 例如,Button的写得很好的OnClickListener不应导致内存泄漏,因为即使OnClickListener可能是内部类,并且对Activity有隐式的引用,整个对象都与活动息息相关.因此,当活动被破坏时,活动Button和OnClickListener的整体都可以全部收集. 然而,在该过程中保留了LocationManager系统服务的A LocationListener.因此,即使活动被摧毁,听众也将保持注册.如果该侦听器是一个内部类,它将继续对活动进行隐式引用,并且您将有一个内存泄漏. 那些内在的阶级应该是坚定
0 2024-02-02
编程技术问答社区
安卓-实现可包裹的内部类
我知道如何使用公共变量实现一个简单的包裹类,但是下面的类更为复杂.考虑到该类具有内部类和上述性,我该如何实现包裹可穿透的接口?我什至不确定如何开始.关于如何执行此操作的任何详细信息将不胜感激. import android.os.Parcel; import android.os.Parcelable; import java.util.List; public class ResponsePlaceSearch implements Parcelable { // *** Parcelable methods are shown below (Begin) *** protected ResponsePlaceSearch(Parcel in) { } public static final Creator CREATOR = new Creator()
6 2024-02-02
编程技术问答社区
Java-Android-将活动/类分割成多个文件,以便更好地组织起来(解决方案)。
我不是Java的专业人士,但我发现自己对Android活动变得太大而发疯. 经过几页的代码长度,我发现自己是永久来回滚动的! 不仅可以进行巨大的行为,而且只有很多代码倾向于总结更大的活动. 碎片对我不是解决方案. 总的来说,Java不允许将类分成几个文件,因此需要黑客攻击. 我浏览了许多关于此的堆叠线线程,没有一个解决方案. 无论如何我解决了它,也许这对他人有所帮助. 这有点集中在我被所有菜单和按钮的庞大的onclick处理程序中厌恶时,但我想这也适用于其他一般的Java问题. > 解决方案 一个解决方案很简单,您可以制作主类字段public 但是,这会弄乱您的代码,您应该在可能的情况下将字段保持私密. 除了更好地完成IDE的代码外,它还保护了类免受非法外部操作的侵害. 现在,对我来说,诀窍是内在的课程. 内部类可以访问其父母的私有字段,但是Java也不允许将内部类放入另一个文件中. 它必须在父类中定义. 这是我开始挖掘的地方,并找到了一种可
0 2024-01-29
编程技术问答社区
为什么它说 "不能在一个不同方法中定义的内层类中引用非最终变量i"?
我有按钮单击侦听器,在onCreate()方法中,我有一个本地变量,例如 onCreate() { super.onCreate(); int i = 10; Button button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { i++; } }); 为什么Java要求让我最终? 解决方案 当onCreate()方法返回时,您的本地变量将从堆栈中清理,因此它们将不再存在.但是匿名类对象new view.onclicklistener()引用这些变量.原因是错误的行为,所以Java不允许您这样做. 最终后,它变为常数.因此,它存储在堆中,可以安
2 2024-01-29
编程技术问答社区
Java:在匿名内类中调用外类方法
Recently, I ran into a mysterious problem in an android project, which I described 在这里.我以某种方式解决了这个问题,但仍然不知道其背后的确切原因. 假设我想在内类中调用函数foo().问题是,直接称其为 ,有什么区别 foo(); 或使用外部类实例调用 OuterClass.this.foo(); 此外,我将不胜感激是否有人可以检查我的最后一个问题与此相关的问题,并给我一个线索,了解为什么发生错误.非常感谢. ps:我在某个地方读到,非静态内类将始终保持外部类的实例.因此,如果我只使用foo()? ,它将使用该实例调用外部函数 解决方案 后者更加明确,如果一个具有相同名称的内类,则可以调用外类方法. class OuterClass { void foo() { System.out.println("Outer foo"); } View.O
4 2024-01-28
编程技术问答社区
Android + MySQL使用com.mysql.jdbc.Driver
我正在编写将连接到MySQL Server的Android应用程序.现在,我使用 http://http://localhost:3306/测试了我的计算机上的MySQL服务器.下面的代码在严格地作为Java应用程序测试时工作正常. import java.sql.*; public class MySQL{ public static void main(String[] args) { System.out.println("MySQL Connect Example."); Connection conn = null; String url = "jdbc:mysql://localhost:3306/"; String dbName = "database"; String driver = "com.mysql.jdbc.Driver"; String userName = "root"; String p
0 2024-01-28
编程技术问答社区
从一个BroadcastReceiver类中调用一个活动方法
我知道我可以做一个内部接收器类,从我的接收器调用任何方法 但是我的主要活动太大了,做了很多事情. 因此,我将需要一个扩展广播接收器但不是内在类的课程.可以从我的主要活动中调用一种方法.我不知道这是否可能,但我的活动是家庭活动和"单一信息"活动,所以也许有了这个细节,有人可以访问我的活动. 如果不可能在多个文件中将某些Java代码拆分,则我的主体有600多行. (有关信息,我已经有19个Java文件,用于我的应用程序的Alpha版本,因此我已经尝试将其拆分) 解决方案 动态创建Broadcastreceiver: 在您的Broadcastreceiver类中定义类成员: YourMainActivity yourMain = null; 和方法: setMainActivityHandler(YourMainActivity main){ yourMain = main; } 从您的主动行为中: private YourBroad
4 2024-01-27
编程技术问答社区
作为内层类的BroadcastReceiver
我知道如果将BroadcastReceiver定义为Activity的内部类,则无法使用BroadcastReceiver.但是我想知道为什么?是因为系统必须实例化一个大的对象才能实例化接收器实例吗? 解决方案 ...因为系统必须实例化一个大活动对象才能插入接收器实例? 是,就像其他任何非静态内部类一样.它必须从某个地方(例如,实例化或其他某些机制)获得外部类的实例,然后才能创建(非静态)内类的实例. 从清单文件中的意图中调用的全局广播接收器,该系统将自动实例化,而该系统无需使用这种外部实例来创建广播接收器非静态内部类的实例.这与外部类是独立的,活动与否. 但是,如果您使用的是接收器作为参与活动的一部分,则可以在活动中手动对广播接收器进行实例化(活动回调之一,您有一个外部类实例可以使用: this),然后根据适当的登记/取消注册: public class MyActivity extends Activity { private Broad
0 2024-01-27
编程技术问答社区