【ThinkInJava之内部类】教程文章相关的互联网学习教程文章

Java匿名内部类List【代码】

我想通过匿名内部类在运行时将方法附加到LinkedList对象.这可能吗? 例如:LinkedList<String> paths = new LinkedList<String>() {void addAllIfNotNull(Collection<String> c) {if(c != null) {addAll(c);}}};paths.add(list1);paths.add(list2);paths.add(list3);...paths.add(listN);无需执行if(list_i不为null)addAll(list_i)? 这似乎不可能,因为LinkedList没有AddAllIfNotNull方法.有没有办法让这项工作?解决方法:您无法使...

java – 如何通过反射正确实例化内部类?【代码】

我在顶级模块中有以下代码行:String username = "testuser987-abc-zyx@gmail.com" ModelBuilder userBuilder = utilityManager.getUtility("user").generateBuilder(username);在我的“用户”实用程序类中,我有以下内容:private class UserBuilder extends ModelBuilder {private final String username;public UserBuilder(String username) {this.username = username;}@Overridepublic User execute() {return populateUserIn...

Java基础(basis)-----内部类详解【代码】

内部类作用: 实现了更好的封装,我们知道,普通类(非内部类)的访问修饰符不能为private或protected,而内部类可以。当我们将内部类声明为private时,只有外部类可以访问内部类,很好地隐藏了内部类 内部类可以继承(extends)或实现(implements)其他的类或接口,而不受外部类的影响 内部类可以直接访问外部类的字段和方法,即使是用private修饰的,相反的,外部类不能直接访问内部类的成员1. 静态内部类:作为类的静态...

java – 函数对象的内部类中的变量/对象会发生什么?【代码】

我有一个函数multi2,它返回内部类Inner作为Object. 会发生什么 – 保存在哪里以及如何访问它?public class C {private static Object multi2(final int a) {class Inner {public int hashCode() {return 2*a;}}return new Inner(); // What happens to a?// Who allocates a?// Can I Access a?}public static void main(String[] args) {Object o = multi2(6);System.out.println("o.hashCode() = " + o.hashCode());o = mul...

java – 在外部类外使用类型化的内部类时,理解“不正确形成的类型,在原始类型上给出的类型参数”【代码】

我对以下内容有点困惑,并感谢您的帮助. 我想要做的是实现一个通用的循环列表,我可以从外部访问节点(而不是它们的值).我将尝试给出一个最小化的设置来说明这一点.class CircularList<T>{Node<T> first;/*Implementation details..., getters, setters */public Node<T> getFirst(){ return this.first };public class Node<U>{/*...*/} }用于另一个类:CircularList<Vertex> vertices = new CircularList<>(); /*...*/ Node<Vertex>...

java – 修改拥有类的属性的内部类【代码】

我有这样的代码:class Foo() {time_to_play = 0class Bar() {void change_player() {//I need something HERE}}}我需要从类Foo更改属性time_to_play,但是在方法change_player()内部进行此更改,即类Bar下. 我不能在类Foo之外声明类Bar,并且做一个’extend’,并调用super. ……,因为在我的情况下它打破了OO. 另外,我不想让time_to_play成为静态变量,调用Foo.time_to_play 我怎么能这样做?解决方法:你想要的是:void change_player(...

java – 为什么封闭类不包含在内部类构造函数的泛型参数中?【代码】

import java.lang.reflect.*; import java.util.Arrays;class Test {class Inner {public <T> Inner(T arg) {}}public static void main(String[] args) {Constructor<?> constructor = Test.Inner.class.getConstructors( )[0];System.out.println("Regular parameters: " +Arrays.toString(constructor.getParameterTypes()) +"\nGeneric parameters: " +Arrays.toString(constructor.getGenericParameterTypes()));} }运行此打印...

java – 在接口中声明的匿名内部类:什么是外部类?【代码】

考虑以下:public class OuterClass {private String attribute = "outer";class InnerClass {private String attribute = "inner";public doSomething() {System.out.println(this.attribute);System.out.println(OuterClass.this.attribute);}}}InnerClass不是静态的,必须针对它的外部类的实例创建. new OuterClass().new InnerClass() 常规内部类包含对创建它的外部类的引用,可以使用Outer.this.myAttribute访问(在这种情况下,存...

Java内部类的基本解析【代码】【图】

内部类 内部类的基本概念所谓的内部类也就是在一个类的内部进行其他类结构的嵌套操作。 为什么要使用内部类?这就要引用一句十分著名的一本书叫《Think in java》中的一句名言了——每个内部类都能独立的继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都是没有影响的。因为内部类拥着类的一些基本特征,所以在实际问题中我们会遇到一些接口无法解决或者难以解决的问题,此时我们可以使用内部...

Java:如何从内部类中的方法返回外部方法【代码】

这是代码void openFile_ActionPerformed(ActionEvent e) {// some code hereworker.setFile(file);worker.start();ActionListener taskPerformer = new ActionListener() {public void actionPerformed(ActionEvent evt) {if (actDone) {if (timer != null)timer.stop();// How to return from the openFile_ActionPerformed() method after this line?progressWindow.threadCompleted(worker); }}};timer = new Timer( 100 , task...

java – 如何在内部类中更改局部变量的值?【代码】

我刚学会了我不能在匿名内部类中使用非最终局部变量,所以当我们需要在不声明即时变量的情况下更改内部类中的值时,是否有任何棘手的方法?解决方法:您无法使用它们是有充分理由的,在继续之前需要考虑这些原因.您将如何处理匿名类的实例?如果它只在本地使用,在该方法的范围内,那么你可以使用这个简单的技巧(假设你有一个int var):final int localVar[] = {1}; new AnonymousClass() {public void method() { localVar[0]++; } };如...

java – kotlin内部类无法访问私有方法吗?【代码】

嗨,我是kotlin的新手,并试图从内部匿名类中调用私有函数. 以下是电话:object callback : Callback<ResponseBody> {override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {Log.d("jjj", " response is " + response.toString())displaySuccess()}override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) {}}private fun displaySuccess(){Toast.makeText(activity,"succesful", Toa...

Java内部类使用注意事项【代码】

Java内部类使用注意事项:1. 非静态内部类成员可以访问外部类实例成员 (如注释1),但外部类访问非静态内部类的成员 必须创建非静态内部类对象来访问其成员,如注释2 public class Lab02 { private int ss=5; private class InnerClass{private int demo=4;private void test() {//注释1:非静态内部类可以直接访问外部类变量System.out.println("外部类成员变量ss的值-->"+ss);} } private void test02() {InnerClass cal=new InnerC...

Java学习总结——内部类【代码】

内部类 内部类就是定义在一个类内部的类,对于同一个包中的其他类来说,内部类可以对于他们隐藏。内部类可以访问它的外部类的所有属性和方法并且不需要创建外部类的对象 必须创建内部类的对象,否则无法通过外部类访问内部类的变量和方法 如果内部类中有和外部类同名的变量或方法,则内部列的变量和方法将获得比外部类的变量和方法更高的优先级 不能定义static变量什么时候用内部类? ——当一个类只会被这个类所调用,而其他类不会...

java算法(3)---静态内部类实现雪花算法【代码】【图】

静态内部类单例模式实现雪花算法 在生成表主键ID时,我们可以考虑主键自增 或者 UUID,但它们都有很明显的缺点 主键自增:1、自增ID容易被爬虫遍历数据。2、分表分库会有ID冲突。 UUID: 1、太长,并且有索引碎片,索引多占用空间的问题 2、无序。 雪花算法就很适合在分布式场景下生成唯一ID,它既可以保证唯一又可以排序。为了提高生产雪花ID的效率, 在这里面数据的运算都采用的是位运算,如果对位运算不了解可以参考博客:【java提...