Remove '@Override' annotation

本文介绍在 Java 1.6 编译环境下 @Override 注解的正确用法,包括如何针对重写的方法使用该注解,以及为何在实现接口的方法中无法使用。同时提供了解决方案来确保代码规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


如果是1.5的,那么只能对重写的方法使用@Override,实现的接口的方法则不支持


看了下,我默认的编译环境是jdk1.6.preference->java->compiler 下要改成1.6,然后就是Configure Project Specific Settings,设置项目的编译环境也为jdk1.6就好了.

private static final AnnotationMatcher AUTOWIRED_ANNOTATION_MATCHER = new AnnotationMatcher("@org.springframework.beans.factory.annotation.Autowired(true)"); @Override public String getDisplayName() { return "Remove the `@Autowired` annotation on inferred constructor"; } @Override public String getDescription() { return "Spring can infer an autowired constructor when there is a single constructor on the bean. " + "This recipe removes unneeded `@Autowired` annotations on constructors."; } @Override public TreeVisitor<?, ExecutionContext> getVisitor() { return Preconditions.check(new UsesType<>("org.springframework.beans.factory.annotation.Autowired", false), new JavaIsoVisitor<ExecutionContext>() { @Override public J.ClassDeclaration visitClassDeclaration(J.ClassDeclaration classDecl, ExecutionContext ctx) { J.ClassDeclaration cd = super.visitClassDeclaration(classDecl, ctx); int constructorCount = 0; for (Statement s : cd.getBody().getStatements()) { if (isConstructor(s)) { constructorCount++; if (constructorCount > 1) { return cd; } } } // Lombok can also provide a constructor, so keep `@Autowired` on constructors if found if (!FindAnnotations.find(cd, "@lombok.*Constructor").isEmpty()) { return cd; } // `@ConfigurationProperties` classes usually use field injection, so keep `@Autowired` on constructors if (!FindAnnotations.find(cd, "@org.springframework.boot.context.properties.ConfigurationProperties").isEmpty()) { return cd; } return cd.withBody(cd.getBody().withStatements( ListUtils.map(cd.getBody().getStatements(), s -> { if (!isConstructor(s)) { return s; } maybeRemoveImport("org.springframework.beans.factory.annotation.Autowired"); return (Statement) new RemoveAnnotationVisitor(AUTOWIRED_ANNOTATION_MATCHER).visit(s, ctx, getCursor()); }) )); } }); } 同理推断写法判断当前类中是否被包含 @Autowired 方式注入的字段
最新发布
07-05
package com.example.test360; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.Manifest; import android.hardware.usb.UsbDevice; import android.os.Bundle; import android.os.ConditionVariable; import android.os.Handler; import android.os.HandlerThread; import android.util.Log; import android.view.SurfaceHolder; import android.widget.TextView; import com.herohan.uvcapp.CameraHelper; import com.herohan.uvcapp.ICameraHelper; import com.hjq.permissions.XXPermissions; import com.serenegiant.usb.Size; import com.serenegiant.usb.UVCCamera; import com.serenegiant.usb.UVCParam; import com.serenegiant.widget.AspectRatioSurfaceView; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue; public class MainActivity extends AppCompatActivity { private static final boolean DEBUG = true; private static final String TAG = MainActivity.class.getSimpleName(); private static final int DEFAULT_WIDTH = 320; private static final int DEFAULT_HEIGHT = 240; private TextView mCameraNameLeft,mCameraNameRight, mCameraNameCenter; private UsbDevice mUsbDeviceLeft,mUsbDeviceRight, mUsbDeviceCenter; private ICameraHelper mCameraHelperLeft, mCameraHelperRight, mCameraHelperCenter; private AspectRatioSurfaceView svCameraViewLeft, svCameraViewRight, svCameraViewCenter; private ConcurrentLinkedQueue<UsbDevice> mReadyUsbDeviceList = new ConcurrentLinkedQueue<>(); private ConditionVariable mReadyDeviceConditionVariable = new ConditionVariable(); private final Object mSync = new Object(); private HandlerThread mHandlerThread; private Handler mAsyncHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //setTitle(R.string.entry_multi_camera_new); if (DEBUG) Log.d(TAG, "huahua--onCreate:"); mCameraNameLeft = findViewById(R.id.textViewLeft); mCameraNameRight = findViewById(R.id.textViewRight); mCameraNameCenter = findViewById(R.id.textViewCenter); List<String> needPermissions = new ArrayList<>(); initViews(); mHandlerThread = new HandlerThread(TAG); mHandlerThread.start(); mAsyncHandler = new Handler(mHandlerThread.getLooper()); initCameraHelper(); needPermissions.add(Manifest.permission.CAMERA); XXPermissions.with(this) .permission(needPermissions) .request((permissions, all) -> { if (!all) { return; } initViews(); mHandlerThread = new HandlerThread(TAG); mHandlerThread.start(); mAsyncHandler = new Handler(mHandlerThread.getLooper()); initCameraHelper(); }); } @Override protected void onDestroy() { super.onDestroy(); mHandlerThread.quitSafely(); mAsyncHandler.removeCallbacksAndMessages(null); } private void initViews() { setCameraViewLeft(); setCameraViewRight(); setCameraViewCenter(); } private void setCameraViewLeft() { svCameraViewLeft = findViewById(R.id.svCameraViewLeft); svCameraViewLeft.setAspectRatio(DEFAULT_WIDTH, DEFAULT_HEIGHT); svCameraViewLeft.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(@NonNull SurfaceHolder holder) { if (mCameraHelperLeft != null) { mCameraHelperLeft.addSurface(holder.getSurface(), false); } } @Override public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(@NonNull SurfaceHolder holder) { if (mCameraHelperLeft != null) { mCameraHelperLeft.removeSurface(holder.getSurface()); } } }); } private void setCameraViewRight() { svCameraViewRight = findViewById(R.id.svCameraViewRight); svCameraViewRight.setAspectRatio(DEFAULT_WIDTH, DEFAULT_HEIGHT); svCameraViewRight.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(@NonNull SurfaceHolder holder) { if (mCameraHelperRight != null) { mCameraHelperRight.addSurface(holder.getSurface(), false); } } @Override public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(@NonNull SurfaceHolder holder) { if (mCameraHelperRight != null) { mCameraHelperRight.removeSurface(holder.getSurface()); } } }); } private void setCameraViewCenter() { svCameraViewCenter = findViewById(R.id.svCameraViewCenter); svCameraViewCenter.setAspectRatio(DEFAULT_WIDTH, DEFAULT_HEIGHT); svCameraViewCenter.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(@NonNull SurfaceHolder holder) { if (mCameraHelperCenter != null) { mCameraHelperCenter.addSurface(holder.getSurface(), false); } } @Override public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(@NonNull SurfaceHolder holder) { if (mCameraHelperCenter != null) { mCameraHelperCenter.removeSurface(holder.getSurface()); } } }); } @Override protected void onStart() { if (DEBUG) Log.d(TAG, "huahua--onStart:"); super.onStart(); } @Override protected void onStop() { if (DEBUG) Log.d(TAG, "onStop:"); super.onStop(); clearCameraHelper(); } public void initCameraHelper() { if (DEBUG) Log.d(TAG, "initCameraHelper:"); if (mCameraHelperLeft == null) { mCameraHelperLeft = new CameraHelper(); mCameraHelperLeft.setStateCallback(mStateListenerLeft); } if (mCameraHelperRight == null) { mCameraHelperRight = new CameraHelper(); mCameraHelperRight.setStateCallback(mStateListenerRight); } if (mCameraHelperCenter == null) { mCameraHelperCenter = new CameraHelper(); mCameraHelperCenter.setStateCallback(mStateListenerCenter); } } private void clearCameraHelper() { if (DEBUG) Log.d(TAG, "clearCameraHelper:"); if (mCameraHelperLeft != null) { mCameraHelperLeft.release(); mCameraHelperLeft = null; } if (mCameraHelperRight != null) { mCameraHelperRight.release(); mCameraHelperRight = null; } if (mCameraHelperCenter != null) { mCameraHelperCenter.release(); mCameraHelperCenter = null; } } private void selectDeviceLeft(final UsbDevice device) { if (DEBUG) Log.v(TAG, "selectDeviceLeft:device=" + device.getDeviceName()); mUsbDeviceLeft = device; mAsyncHandler.post(() -> { waitCanSelectDevice(device); if (mCameraHelperLeft != null) { mCameraHelperLeft.selectDevice(device); } }); } private void selectDeviceRight(final UsbDevice device) { if (DEBUG) Log.v(TAG, "selectDeviceRight:device=" + device.getDeviceName()); mUsbDeviceRight = device; mAsyncHandler.post(() -> { waitCanSelectDevice(device); if (mCameraHelperRight != null) { mCameraHelperRight.selectDevice(device); } }); } private void selectDeviceCenter(final UsbDevice device) { if (DEBUG) Log.v(TAG, "selectDeviceCenter:device=" + device.getDeviceName()); mUsbDeviceCenter = device; mAsyncHandler.post(() -> { waitCanSelectDevice(device); if (mCameraHelperCenter != null) { mCameraHelperCenter.selectDevice(device); } }); } /** * wait for only one camera need request permission * * @param device */ private void waitCanSelectDevice(UsbDevice device) { mReadyUsbDeviceList.add(device); while (mReadyUsbDeviceList.size() > 1) { mReadyDeviceConditionVariable.block(); mReadyDeviceConditionVariable.close(); } } /** * remove ready camera that wait for select * * @param device */ private void removeSelectedDevice(UsbDevice device) { mReadyUsbDeviceList.remove(device); mReadyDeviceConditionVariable.open(); } private final ICameraHelper.StateCallback mStateListenerLeft = new ICameraHelper.StateCallback() { private final String LOG_PREFIX = "ListenerLeft#"; @Override public void onAttach(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onAttach:"); synchronized (mSync) { if (mUsbDeviceLeft == null && !device.equals(mUsbDeviceRight) && !device.equals(mUsbDeviceCenter)) { selectDeviceLeft(device); mCameraNameLeft.setText("左相机("+device.getDeviceName()+")"); } } } @Override public void onDeviceOpen(UsbDevice device, boolean isFirstOpen) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onDeviceOpen:"); if (mCameraHelperLeft != null && device.equals(mUsbDeviceLeft)) { UVCParam param = new UVCParam(); // param.setQuirks(UVCCamera.PIXEL_FORMAT_NV12); param.setPreviewSize(new Size(DEFAULT_HEIGHT, 320, 240, 30, null)); mCameraHelperLeft.openCamera(param); } removeSelectedDevice(device); } @Override public void onCameraOpen(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onCameraOpen:"); if (mCameraHelperLeft != null && device.equals(mUsbDeviceLeft)) { mCameraHelperLeft.stopRecording(); mCameraHelperLeft.startPreview(); Size size = mCameraHelperLeft.getPreviewSize(); if (size != null) { int width = size.width; int height = size.height; //auto aspect ratio svCameraViewLeft.setAspectRatio(width, height); } mCameraHelperLeft.addSurface(svCameraViewLeft.getHolder().getSurface(), false); } } @Override public void onCameraClose(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onCameraClose:"); if (device.equals(mUsbDeviceLeft)) { if (mCameraHelperLeft != null) { mCameraHelperLeft.removeSurface(svCameraViewLeft.getHolder().getSurface()); } } } @Override public void onDeviceClose(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onDeviceClose:"); } @Override public void onDetach(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onDetach:"); if (device.equals(mUsbDeviceLeft)) { // mUsbDeviceLeft = null; } removeSelectedDevice(device); } @Override public void onCancel(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onCancel:"); if (device.equals(mUsbDeviceLeft)) { // mUsbDeviceLeft = null; } removeSelectedDevice(device); } }; private final ICameraHelper.StateCallback mStateListenerRight = new ICameraHelper.StateCallback() { private final String LOG_PREFIX = "ListenerRight#"; @Override public void onAttach(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onAttach:"); synchronized (mSync) { if (mUsbDeviceRight == null && !device.equals(mUsbDeviceLeft) && !device.equals(mUsbDeviceCenter)) { selectDeviceRight(device); mCameraNameRight.setText("右相机("+device.getDeviceName()+")"); } } } @Override public void onDeviceOpen(UsbDevice device, boolean isFirstOpen) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onDeviceOpen:"); if (mCameraHelperRight != null && device.equals(mUsbDeviceRight)) { UVCParam param = new UVCParam(); // param.setQuirks(UVCCamera.PIXEL_FORMAT_NV12); param.setPreviewSize(new Size(5, 320, 240, 30, null)); mCameraHelperRight.openCamera(param); } removeSelectedDevice(device); } @Override public void onCameraOpen(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onCameraOpen:"); if (mCameraHelperRight != null && device.equals(mUsbDeviceRight)) { mCameraHelperRight.startPreview(); Size size = mCameraHelperRight.getPreviewSize(); if (size != null) { int width = size.width; int height = size.height; //auto aspect ratio svCameraViewRight.setAspectRatio(width, height); } mCameraHelperRight.addSurface(svCameraViewRight.getHolder().getSurface(), false); } } @Override public void onCameraClose(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onCameraClose:"); if (device.equals(mUsbDeviceRight)) { if (mCameraHelperRight != null) { mCameraHelperRight.removeSurface(svCameraViewRight.getHolder().getSurface()); } } } @Override public void onDeviceClose(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onDeviceClose:"); } @Override public void onDetach(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onDetach:"); if (device.equals(mUsbDeviceRight)) { // mUsbDeviceRight = null; } removeSelectedDevice(device); } @Override public void onCancel(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onCancel:"); if (device.equals(mUsbDeviceRight)) { // mUsbDeviceRight = null; } removeSelectedDevice(device); } }; private final ICameraHelper.StateCallback mStateListenerCenter = new ICameraHelper.StateCallback() { private final String LOG_PREFIX = "ListenerCenter#"; @Override public void onAttach(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onAttach:"); synchronized (mSync) { if (mUsbDeviceCenter == null && !device.equals(mUsbDeviceRight) && !device.equals(mUsbDeviceLeft)) { selectDeviceCenter(device); mCameraNameCenter.setText("中间相机("+device.getDeviceName()+")"); } } } @Override public void onDeviceOpen(UsbDevice device, boolean isFirstOpen) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onDeviceOpen:"); if (mCameraHelperCenter != null && device.equals(mUsbDeviceCenter)) { UVCParam param = new UVCParam(); // param.setQuirks(UVCCamera.PIXEL_FORMAT_NV12); param.setPreviewSize(new Size(5, 320, 240, 30, null)); mCameraHelperCenter.openCamera(param); } removeSelectedDevice(device); } @Override public void onCameraOpen(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onCameraOpen:"); if (mCameraHelperCenter != null && device.equals(mUsbDeviceCenter)) { mCameraHelperCenter.startPreview(); Size size = mCameraHelperCenter.getPreviewSize(); if (size != null) { int width = size.width; int height = size.height; //auto aspect ratio svCameraViewCenter.setAspectRatio(width, height); } mCameraHelperCenter.addSurface(svCameraViewCenter.getHolder().getSurface(), false); } } @Override public void onCameraClose(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onCameraClose:"); if (device.equals(mUsbDeviceCenter)) { if (mCameraHelperCenter != null) { mCameraHelperCenter.removeSurface(svCameraViewCenter.getHolder().getSurface()); } } } @Override public void onDeviceClose(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onDeviceClose:"); } @Override public void onDetach(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onDetach:"); if (device.equals(mUsbDeviceCenter)) { // mUsbDeviceCenter = null; } removeSelectedDevice(device); } @Override public void onCancel(UsbDevice device) { if (DEBUG) Log.v(TAG, LOG_PREFIX + "onCancel:"); if (device.equals(mUsbDeviceCenter)) { // mUsbDeviceCenter = null; } removeSelectedDevice(device); } }; } 请分析我的代码我的摄像头回传的画面存储再那写变量种
07-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值